How to convert the world co-ordinate to the co-ordinates that I can use on screen?

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

see: Unity - Scripting API: Camera.WorldToScreenPoint

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.

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.