- Home /
Find distance within screen!
Hey Guys i've been trying to get a code that can get X axis between the left to right well its hard to explain I will show picture
![alt text][1] [1]: /storage/temp/9934-untitled.png
So i need the distance between A and B but that variates on the size of the screen could you guys help me out thank you already
Answer by robertbu · Apr 11, 2013 at 05:50 PM
You can use Camera.ViewportToWorldPoint(). Viewport coordinates go form (0,0) in the lower left to (1,1) in the upper right. The 'Z' parameter will be the distance from the camera into the scene. So lets assume you are talking the middle of the screen 10 units from the camera:
var v1 = Camera.main.ViewportToWorldPoint(Vector3(0,0.5,1));
var v2 = Camera.main.ViewportToWorldPoint(Vector3(1,0.5,1));
var dist = Vector3.Distance(v1,v2);][1]
[1]: http://docs.unity3d.com/Documentation/ScriptReference/Camera.ViewportToWorldPoint.html
Answer by Dracorat · Apr 11, 2013 at 05:58 PM
You'll need to raycast from the screen to world. Put a plane that's billboarded to the camera (there are scripts for this) and you can turn off its mesh renderer so it's invisible but add a collision plane so that the raycast hits something. That will give you the coordinate at which the raycast hits that plane.
Do one raycast for 0,0 and one at screenWidth, screenHeight.
Place objects accordingly.
Another option, if you want the objects to always have the same scale is to just parent them in the proper location to the camera. You'll still have to do a raycast initially as described above, but then just parent the result to the camera and put the raycast catching plane at whatever distance is right for the scale you want.
Your answer
Follow this Question
Related Questions
Wall Jump script 2 Answers
How to determine if a line intersects with a frustum 2 Answers
2D object look at 3D object 0 Answers
Unity 2D Platformer Enemy flipping 1 Answer