I would like to create a gui texture which “points”(i.e. is placed at) a physical 3d object. I read alot about this line of code:
Camera.mainCamera.WorldToScreenPoint(target.transform.position);
But when I implement it, it gives me strange values. At some stages it gives me something like 7500 for my x. The tiny game screen in the centre only displays a range of 0->0.9 for x and y, so any value above 1 is not renderable.
How can I implement WorldToScreenPoint correctly?
#pragma strict
public var objectiveIcon : GUITexture;
public var objectiveDescription : GUIText;
private var icon : GUITexture;
private var description : GUIText;
function Start ()
{
icon = Instantiate(objectiveIcon);
description = Instantiate(objectiveDescription);
}
function Update ()
{
icon.transform.position = Camera.mainCamera.WorldToScreenPoint (this.transform.position);
icon.transform.position.y = Screen.height - icon.transform.position.y;
description.transform.position = Camera.mainCamera.WorldToScreenPoint (this.transform.position);
description.transform.position.y = Screen.height - icon.transform.position.y;
Debug.Log(icon.transform.position.ToString());
Debug.Log(description.transform.position.ToString());
}
function OnDestroy ()
{
Destroy(icon);
Destroy(description);
}
Thank you very much! Uh, sorry about that Y thing. I did it only because everybody wrote that onscreen Y works inversely with WorldToScrenPoint.
– MosseyThere is a difference between a GUITexture and GUI.DrawTexture. The latter is from the GUI interface and lives in GUI coordinates. GUI coordiantes are screen coordinates that start in the upper left corner rather than the lower left corner. So if you were trying to place a GUI.DrawTexture at a world position you would first convert to screen coordinates and then you would have to do make the conversion that 'everybody wrote' about.
– robertbuAny chance you have two camera viewing the scene?
– robertbuI have a top-view minimap camera. Its settings exclude the layer that the scripted object is in. Any way I can debug / fix? @Edit the second camera doesn't have a guiLayer either. When I disable the guiLayer on Main Camera both guiTextures disappear.
– Mossey