I have a game object that is in world space and when I use transform.position it returns me the world co-ordinates. I need to make another game object that appears on top of this in the screen. How to achieve this? I have tried doing this:
obj2.transform.position = Game.UI.UICamera.WorldToViewportPoint(obj1.transform.position);
Since using WorldToScreenPoint was returning pixel values and I was not sure how to use it. I am relatively new to Unity.
2 Answers
2
As mentioned in the previous answer’s comment I wanted to get the on screen co-ordinate position for a gameobject appearing in the UI camera. To achieve this as other answer suggested, I used
Vector3 tempPoint = Game.UI.UICamera.WorldToScreenPoint(obj1.transform.position);
This gives a position on screen but in pixel values. To obtain the co-ordinate positions,
obj2.transform.position = Camera.main.ScreenToWorldPoint(tempPoint) ;
This converts the on screen values to world co-ordinates. However note the cameras used, the first one obtains values from UI camera while the second one uses the game camera. Thus getting position of a gameobject in UI camera to the main camera. Please let me know if I have misunderstood anything. I am still learning Unity.
This is the correct approach. I didn't word the question properly though. The answer I needed was for the question "How to get the world co-ordinates for a game object in the UI camera and convert to world co-ordinate position within the screen?". Even for this question this is the right approach. Thanks. I will add my answer just in case someone needs it in future.
– srinivasv1992