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

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.