Question by
fleischverpackung · Mar 23, 2016 at 03:07 PM ·
gameobjectarraylooptranslategenerate
Generate and translate GameObjects
Hi all,
I want to tranform multiple objects with variables from an array. It works but is very unflexible.
Any inputs on how to do this with a loop? Thanks :)
sphereA.transform.position = (new Vector3(UDPClient.kinect[0], UDPClient.kinect[1], UDPClient.kinect[2]));
sphereB.transform.position = (new Vector3(UDPClient.kinect[3], UDPClient.kinect[4], UDPClient.kinect[5]));
sphereC.transform.position = (new Vector3(UDPClient.kinect[6], UDPClient.kinect[7], UDPClient.kinect[8]));
sphereD.transform.position = (new Vector3(UDPClient.kinect[9], UDPClient.kinect[10], UDPClient.kinect[11]));
sphereE.transform.position = (new Vector3(UDPClient.kinect[12], UDPClient.kinect[13], UDPClient.kinect[14]));
sphereF.transform.position = (new Vector3(UDPClient.kinect[15], UDPClient.kinect[16], UDPClient.kinect[17]));
sphereG.transform.position = (new Vector3(UDPClient.kinect[18], UDPClient.kinect[19], UDPClient.kinect[20]));
sphereH.transform.position = (new Vector3(UDPClient.kinect[21], UDPClient.kinect[22], UDPClient.kinect[23]));
Comment
Answer by ComradeVanti · Mar 23, 2016 at 03:17 PM
Something like this?
void translateObjects ()
{
GameObject[] yourObjects;
int index = 0;
for (int i = 0; i < yourObjects.Length; i++) {
yourObjects [i].transform.position = new Vector3 (UDPClient.kinect [index], UDPClient.kinect [index + 1], UDPClient.kinect [index + 2]);
index += 3;
}
}
Answer by fleischverpackung · Mar 23, 2016 at 03:43 PM
Thanks, yes this works! But is there a way to generate all the GameObjects? I don't want to drag all of em into the inspector and then write the array by hand. There are a lot of arrays :)
public GameObject sphere0;
public GameObject sphere1;
public GameObject sphere2;
public GameObject sphere3;
public GameObject sphere4;
public GameObject sphere5;
public GameObject sphere6;
public GameObject sphere7;
void Start()
{
sphereArr = new GameObject[]
{
sphere0,
sphere1,
sphere2,
sphere3,
sphere4,
sphere5,
sphere6,
sphere7
};
}
void Update()
{
for (int i = 0; i < sphereArr.Length; i++)
{
sphereArr[i].transform.position = (new Vector3(UDPClient.kinect[i*3], UDPClient.kinect[i*3+1], UDPClient.kinect[i*3+2]));
}
}