Как сослаться на локальный экземпляр основной камеры в единой сети, когда в сцене более одного. Один на игрока - PullRequest
0 голосов
/ 05 ноября 2018

Я делаю игру в многопользовательской игре в единстве, которая использует сеть. Он использует сетевой менеджер, сетевой менеджер HUD и сетевой идентификатор. Вероятно, больше компонентов, поскольку я узнаю больше о единстве. Проблема в том, что основная камера появляется в меню до того, как объект моего игрока появляется через сетевой менеджер. Таким образом, переменная lookAt назначена неправильно. Я хочу назначить его либо через скрипт камеры, либо через скрипт игрока после его появления. Проблема в том, что в игре есть 4 игрока, префабы и 4 основные камеры. Все, что я пробовал, просто переназначает ВСЕ переменные lookAt камеры. Как мне назначить внешний вид моей локальной камеры моему локальному проигрывателю?

  • Это игра от третьего лица
  • Я действительно не хочу превращать камеру в ребенка от сборного игрока, это испортит другие части моей игры.

1 Ответ

0 голосов
/ 05 ноября 2018

Не используйте основную камеру для каждого игрока, в любой момент времени в вашей сцене должна быть только одна основная камера (следовательно, она называется основная камера). Поэтому, если вы попытаетесь позвонить на 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)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...