From Unify Community Wiki
Revision as of 18:03, 25 January 2010 by Eric5h5 (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Author: Eric Haines (Eric5h5)


Makes a GUIText label follow an object in 3D space. Useful for things like having name tags over players' heads.


Attach this script to a GUIText object, and drag the object it should follow into the Target slot. For best results, the anchor of the GUIText should probably be set to lower center, depending on what you're doing. Offset is used to position the label somewhere relative to the actual target's position. The default of (0, 1, 0) is useful for having the label appear above the object, rather than appearing right on top of it. If ClampToScreen is on, the label will never disappear even if the target is off the screen, but will attempt to follow as best it can (for example, if the target is off to the left of the camera out of sight, the label will still be visible on the left). If UseMainCamera is checked, the first camera in the scene tagged MainCamera will be used. If it's not checked, you should drag the desired camera onto the CameraToUse slot, which is otherwise unused if UseMainCamera is true.

JavaScript - ObjectLabel.js

<javascript>var target : Transform; // Object that this label should follow var offset = Vector3.up; // Units in world space to offset; 1 unit above object by default var clampToScreen = false; // If true, label will be visible even if object is off screen var useMainCamera = true; // Use the camera tagged MainCamera var cameraToUse : Camera; // Only use this if useMainCamera is false private var cam : Camera; private var thisTransform : Transform;

function Start () { thisTransform = transform; if (useMainCamera) cam = Camera.main; else cam = cameraToUse; }

function Update () { thisTransform.position = cam.WorldToViewportPoint(target.position + offset); if (clampToScreen) thisTransform.position = Vector3(Mathf.Clamp(thisTransform.position.x, .05, .95), Mathf.Clamp(thisTransform.position.y, .05, .95), thisTransform.position.z); } </javascript>

Personal tools