How can I transform the touch position (On phones) to world position.
For instance if my phone’s screen size is 1440 by 2560 and my touch position on the phone is X 600 Y 700. How can I transform that position to world position on unity?
I need that so I can know where the user put his finger.
2 Answers
2
There is no true 2D position. Even when using 2D features, positions are still 3D. For 2D, Orthographic camera, with rotation (0,0,0) you can do:
var pos = Camera.main.ScreenToWorldPoint(touchposition);
pos.z = transform.position.z;
This will be the finger position at the ‘z’ position of the object with the script.
Vector3 screenPos = new Vector3(Input.mousePosition, Input.mousePosition, 10);
Vector3 worldPos = Camera.main.ScreenToWorldPoint(screenPos);
worldpos will be a world point where you touched, 10 meters from the camera.
You did not get me. I am using android, not pc. the x and y are different. I can not just put it in this code.
– udi1997So you pass the position of the touch. You don't provide your touch code, so I cannot provide the exact code, but the concept is the same. You get a screen position and call ScreenToWorldPoint() to get the world position.
– robertbu