RTS health bars

Hey everyone,
I am trying to add a health bar to a moving unit in an RTS. When I apply my code I used for a tower object the health bar ends up in weird places. I just want to position it above the unit. It needs to be able to move with the unit, and stay with the unit if the camera moves. I tried this so far,

private void OnGUI(){
		//health bar for player units
		
		GUI.DrawTexture(new Rect (HealthBarPos.x,(Screen.height-HealthBarPos.y),length*(unitHealthBarLength/unitHealthBarMaxLength),5),selectionHighLight);
		
	}

This code is attached to the unit, so I didnt need to reference it as an object…i think. Each time I run the code and have the first two parameters change the health bar always ends up in wierd places. Anyone have any ideas? Thanks,

For your case, you need use function WorldToScreenPoint(). This function transfers world coordinates to screen coordinates. But you remember that to be transfer to pivot point. For example, for the sphere it is the center. I will write a small script for the explanation(write on CSharp):

 public Texture2D tex = null;

 void OnGUI() {
  //Gets coordinate our object on screen
  Vector3 scrPos = Camera.main.WorldToScreenPoint(this.transform.position);
  //Sets texture for size, for example, 100x30
  GUI.DrawTexture(new Rect(scrPos.x - 100/2.0f, Screen.height - scrPos.y - 30/2.0f, 100, 30), tex, ScaleMode.StretchToFill);
 }

Attach this script to your object.

In general, I already answered similar questions. Watch my pregoing answer. I hope it to you will help.

Make a GUIText and attach this script to that: http://wiki.unity3d.com/index.php?title=ObjectLabel