Question by 
               YAZER_ · Jul 15, 2020 at 08:39 PM · 
                touch controlstouchscreenscreentoworldpointtouchphase  
              
 
              hello i have an sphere and want to control it with joystick appears at the same positin of touch.
i want my sphere move on y axis always and control it with joystick on X and Z coordinates and want my joystick appears on touch pos but i can't get the true values of touch pos . here is my code:
 Rigidbody rb;
 public float speed;
 public float Yspeed;
 public GameObject inControl;
 public GameObject outControl;
 private Touch onetouch;
 private Vector3 touchposition;
 
 void Start()
 {
     rb = GetComponent<Rigidbody>();
     inControl.SetActive(false);
     outControl.SetActive(false);
 }  
 void FixedUpdate ()
 {
     if (Input.touchCount > 0)
     {
         onetouch = Input.GetTouch(0);
         touchposition = Camera.main.ScreenToWorldPoint(new Vector3(onetouch.position.x,0f,onetouch.position.y));
         
         switch (onetouch.phase)
         {
              
             case TouchPhase.Began:
                 outControl.SetActive(true);
                 inControl.SetActive(true);
                 inControl.transform.position = touchposition;
                 outControl.transform.position = touchposition;
                 
                 Debug.Log("X= " + touchposition.x+"Y="+touchposition.y);
                 break;
             case TouchPhase.Stationary:
                 useControl();
                 break;
             case TouchPhase.Moved:
                 useControl();
                 break;
             case TouchPhase.Ended:
                 inControl.SetActive(false);
                 outControl.SetActive(false);
                 break;
         }
     }
     
 }
 void useControl()
 {
     inControl.transform.position = touchposition;
     outControl.transform.position = touchposition;
     float hinput = CrossPlatformInputManager.GetAxis("Horizontal") * speed * Time.deltaTime;
     float Vinput = CrossPlatformInputManager.GetAxis("Vertical") * speed * Time.deltaTime;
     rb.AddForce(hinput, Yspeed * Time.deltaTime, Vinput);
 }
 
               }
               Comment
              
 
               
              Your answer
 
             Follow this Question
Related Questions
Disable Input.getTouch in full screen 0 Answers
How to convert Input.GetAxis(MouseAxis.MOUSE_Y), Input.GetAxis(MouseAxis.MOUSE_X) for touch 0 Answers
How do I replicate how you launch the ball in this game? 0 Answers
Pressing Vs Jumping 1 Answer
Why is my first touch interpreted as a mouse click? 0 Answers