- Home /
How can I get the camera to follow multiple objects even if some of them are deleted?
Hello!
I want to have the camera follow 3 targets even if some of them get deleted. This is what I've written so far and the camera does follow the targets but when one gets deleted, the camera stops following. I'm not by any means a good programmer, I'm just a designer trying to learn so that I can prototype and I would greatly appreciate if someone could help me work through this! ^_^ Is there some way that I can make a list of transforms and have the camera follow the average x value of those?
Well thanks for your time!
coleycaves
Answer by IgorAherne · Aug 14, 2017 at 11:24 PM
public class MoveCamera : MonoBehaviour {
public Transform[] players;
private void Update() {
SetCameraPos();
}
void SetCameraPos() {
Vector3 middle = Vector3.zero;
int numPlayers = 0;
for(int i=0; i<players.Length; ++i) {
if(players[i] ==null){
continue; //skip, since player is deleted
}
middle += players[i].position;
numPlayers++;
}//end for every player
//take average:
middle /= numPlayers;
}
Camera cam = GetComponent<Camera>();
cam.transform.position.x = middle.x;
}
PS you are cute
:)
Thanks for the help but I figured something out that worked! I dont really know if it's the optimal solution but hey, it works!
Also, I was looking over your solution and in C# you have to put the values in a Vector3 first, so ins$$anonymous$$d of writing,
cam.transform.position = middle.x;
You have to write this ins$$anonymous$$d:
cam.transform.position = new Vector3(middle.x, transform.position.y, transform.position.z);
Lastly, probably just a simple mistake but you wrote the following functions outside of SetCameraPos() and it has to be within that.
Camera cam = GetComponent(); cam.transform.position.x = middle.x;
Otherwise, your solution works great! :)