Не используйте основную камеру для каждого игрока, в любой момент времени в вашей сцене должна быть только одна основная камера (следовательно, она называется основная камера). Поэтому, если вы попытаетесь позвонить на Camera.Main
, это будут все ваши основные камеры, а не только камеры игрока.
Я думаю, что лучший способ добиться того, чего вы хотите, - это сделать сборную камеру (то есть , а не , помеченную как MainCamera
, и поставить скрипт вашей камеры (если он у вас есть) или любой другой. компоненты, которые вы хотите на вашей камере на этом сборном, а.
Затем, когда ваш игрок порождает, вы создаете экземпляр префаба, чтобы создать экземпляр префаба камеры для этого игрока в одиночку, и используете LookAt
только на камере для этого игрока для этого игрока
Это будет выглядеть примерно так:
public GameObject cameraPrefab; //prefab of the camera you want to instance
private Camera playerCam; //this is gonna be a reference to the camera that looks at the player
void SpawnPlayer()
{
playerCam = Instantiate(cameraPrefab).GetComponent<Camera>(); //instantiate the cameraPrefab and get the camera component of it
playerCam.transform.LookAt(transform); //get the transform of the instanced camera to look at the transform on which this script is run (In this case assuming your player)
}