- Home /
Moving GUI elements to eachother
Hallo everybody,
Recently i tried to move a GUIText to the coordinates of a GUI.Label. At first I thought it would be simple but i was gravely mistaken. The element is moving to a total different position. My code is along these lines:
var posA = 20.0;
var posB = 10.0;
function OnGUI()
{
GUI.Label(Rect(posA,posB,20,20),"test");
}
function Update ()
{
if (alpha > 0)
{
transform.position.y += scroll*Time.deltaTime;
transform.position.x = Mathf.MoveTowards(transform.position.x,posA,Time.deltaTime);
alpha -= Time.deltaTime/duration;
guiText.material.color.a = alpha;
}else
{
Destroy(transform.gameObject);
}
}
As you can see, i want the object to move to the GUI.Label on the posA x coordinate. While the label correctly appears on the upper left corner, the GUIText object (the script is attached to the GUIText object) moves to the upper right corner.
I was wondering if I am coding this wrong, or if MoveTowards is the wrong function for this.
Thanks in advance
Answer by aldonaletto · Dec 15, 2011 at 02:24 PM
GUIText and GUI system objects are different creatures: GUIText uses viewport coordinates, which range from 0 to 1 in x and y (0,0 is bottom-left, 1,1 is top-right), while GUI system uses screen points, but upside down: 0,Screen.height is bottom-left, and Screen.width,0 is top-right. The conversion is something like this:
var guitextX: float = guiX/Screen.width; var guitextY: float = (Screen.height-guiY)/Screen.height;There are also other things to worry about: font and size matching, anchor and text alignment etc. In other words, matching GUIText and GUI.Label definitely isn't an easy task, and may even be impossible.
Thanks alot aldonaletto. I will give it a try, but at least i now know that i should not bang myself over it for days.
Your answer
Follow this Question
Related Questions
how to make fixed guiText ? 0 Answers
How do I build a GUI that works on different sized screens? 3 Answers
Drawing UI text on GUI.DrawTexture , How to do it ? 1 Answer
GUILabel doesn't show up 1 Answer
Score display not working 1 Answer