Question by 
               ncankeles · May 07, 2017 at 08:56 PM · 
                joystickjoysticksthirdpersoncontroller  
              
 
              Integrating Virtual Joystick to the standart ThirdPersonController.
I'm new to the unity, I'm trying to develop basic game for android platform. But my joystick only hovers my thirdpersoncharacter throug x and z axises. How can I use my joystick as an input to the thirdpersoncontroller, so it can run instead of hovering?
My Joystick code is this:
 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 using UnityEngine.UI;
 using UnityEngine.EventSystems;
 
 
 public class joystick : MonoBehaviour , IPointerDownHandler, IPointerUpHandler, IDragHandler
 {
 
     Image joyArka;
     Image joyStick;
 
     Vector3 giriliV;
 
     public GameObject Winston1;
 
     private void Start()
     {
         joyArka = gameObject.transform.GetComponent<Image>(); 
         joyStick = gameObject.transform.GetChild(0).GetComponent<Image>();
 
     }
     public void OnDrag (PointerEventData ped)
     {
         Vector2 position;
         if (RectTransformUtility.ScreenPointToLocalPointInRectangle(joyArka.rectTransform, ped.position, ped.enterEventCamera, out position))
         {
 
             position.x = (position.x / joyArka.rectTransform.sizeDelta.x);
             position.y = (position.y / joyArka.rectTransform.sizeDelta.y);
 
             giriliV = new Vector3(position.x * 2,0,position.y*2);
             giriliV = (giriliV.magnitude > 1.0f) ? giriliV.normalized : giriliV;
 
             joyStick.rectTransform.anchoredPosition = new Vector3(giriliV.x*joyStick.rectTransform.sizeDelta.x/2, giriliV.z* joyStick.rectTransform.sizeDelta.y/2);
         }
                 
                 
     }
     public void OnPointerUp(PointerEventData ped)
     {
         giriliV = Vector3.zero;
         joyStick.rectTransform.anchoredPosition = Vector3.zero;
 
     }
     public void OnPointerDown(PointerEventData ped )
     {
         OnDrag(ped);
     }
 
     private void Update()
     {
         Winston1.transform.position += giriliV * Time.deltaTime * 5;
     }
 
 
                I want to use this code's output positions as an Input To the this code; 
 
     using System;
     using UnityEngine;
     using UnityStandardAssets.CrossPlatformInput;
     
     namespace UnityStandardAssets.Characters.ThirdPerson
     {
         [RequireComponent(typeof (ThirdPersonCharacter))]
         public class ThirdPersonUserControl : MonoBehaviour
         {
             private ThirdPersonCharacter m_Character; // A reference to the ThirdPersonCharacter on the object
             private Transform m_Cam;                  // A reference to the main camera in the scenes transform
             private Vector3 m_CamForward;             // The current forward direction of the camera
             private Vector3 m_Move;
             private bool m_Jump;                      // the world-relative desired move direction, calculated from the camForward and user input.
     
             
             private void Start()
             {
                 // get the transform of the main camera
                 if (Camera.main != null)
                 {
                     m_Cam = Camera.main.transform;
                 }
                 else
                 {
                     Debug.LogWarning(
                         "Warning: no main camera found. Third person character needs a Camera tagged \"MainCamera\", for camera-relative controls.", gameObject);
                     // we use self-relative controls in this case, which probably isn't what the user wants, but hey, we warned them!
                 }
     
                 // get the third person character ( this should never be null due to require component )
             m_Character = GetComponent<ThirdPersonCharacter>();
         }
 
 
         private void Update()
         {
             if (!m_Jump)
             {
                 m_Jump = CrossPlatformInputManager.GetButtonDown("Jump");
             }
         }
 
 
         // Fixed update is called in sync with physics
         private void FixedUpdate()
         {
             // read inputs
             float h = CrossPlatformInputManager.GetAxis("Horizontal");
             float v = CrossPlatformInputManager.GetAxis("Vertical");
             bool crouch = Input.GetKey(KeyCode.C);
 
             // calculate move direction to pass to character
             if (m_Cam != null)
             {
                 // calculate camera relative direction to move:
                 m_CamForward = Vector3.Scale(m_Cam.forward, new Vector3(1, 0, 1)).normalized;
                 m_Move = v*m_CamForward + h*m_Cam.right;
             }
             else
             {
                 // we use world-relative directions in the case of no main camera
                 m_Move = v*Vector3.forward + h*Vector3.right;
             }
 #if !MOBILE_INPUT
             // walk speed multiplier
             if (Input.GetKey(KeyCode.LeftShift)) m_Move *= 0.5f;
 #endif
 
             // pass all parameters to the character control script
             m_Character.Move(m_Move, crouch, m_Jump);
             m_Jump = false;
         }
     }
 }
 
 
               Thank you for your help.
               Comment
              
 
               
              Your answer
 
             Follow this Question
Related Questions
how to map joystick for mobile game? 0 Answers
How do Unity decide which is joystick 1, 2, 3, etc 1 Answer
nested two joysticks 0 Answers
How to get maximum value of a direction working with Joysticks? 1 Answer
Twin stick control 2D 1 Answer