- Home /
Help applying ObjectLabel.js GUIText code to multiple objects
Hi everybody I have been using the ObjectLabel script found here: link text
I have been trying to apply it to multiple game objects see my code below:
var offset = Vector3.up;
var clampToScreen = false;
var clampBorderSize = .05;
var useMainCamera = true
var cameraToUse : Camera;
private var cam : Camera;
private var thisTransform : Transform[];
private var camTransform : Transform;
private var enemyPos : Vector3[];
function Start () {
if (useMainCamera)
cam = Camera.main;
else
cam = cameraToUse;
camTransform = cam.transform;
}
function Update () {
var N : int = GameObject.FindGameObjectsWithTag("enemy").length;
//Main changes to original code below
enemyPos = new Vector3[N];
thisTransform = new Transform[N];
Debug.Log("Length: " + N);
for(var i : int = 0; i < N; i++)
{
thisTransform[i] = transform[i];
enemyPos[i] = GameObject.FindGameObjectsWithTag("enemy")[i].transform.position;
Debug.Log("gos[i]: " + enemyPos[i]);
}
if (clampToScreen)
{
var relativePosition = camTransform.InverseTransformPoint(enemyPos[i]);
relativePosition.z = Mathf.Max(relativePosition.z, 1.0);
thisTransform[i].position = cam.WorldToViewportPoint(camTransform.TransformPoint(relativePosition + offset));
thisTransform[i].position = Vector3(Mathf.Clamp(thisTransform[i].position.x, clampBorderSize, 1.0-clampBorderSize),
Mathf.Clamp(thisTransform[i].position.y, clampBorderSize, 1.0-clampBorderSize),
thisTransform[i].position.z);
}
else
{
thisTransform[i].position = cam.WorldToViewportPoint(enemyPos[i] + offset); // error appears here
}
}
@script RequireComponent(GUIText)
The error that appears is that Unity does not support slicing? What does that mean and better yet can anyone edit this code so that it'll apply a guiText to multiple objects labelled enemy? Thanks in advance!
Error: Assets/scriptObjectLabels.js(29,32): BCE0048: Type 'UnityEngine.Transform' does not support slicing.
Answer by Baalhug · Nov 27, 2013 at 10:53 PM
I'm not sure but i think the problem is in the line 28 besides 29 as error indicates: thisTransform[i] = transform[i] You have "i" enemies and you want to cycle through them with your for loop, but i cant understand the meaning of thisTransform[0] and thisTransform[1] ... thisTransform[i] I mean, thisTransform is the object who is running the script, so it makes no sense you include it in your loop count. Maybe it's that.
Your answer
