Короче говоря, у меня очень простая многопользовательская игра. Это игра Roll A Ball (учебник Unity3D). Так что прямо сейчас у меня есть игроки и т. Д., И все они отлично умеют контролировать свои собственные шары.Как подключить камеру к объекту игрока, созданному HLAPI Network Manager?
Но вот в чем проблема: у меня есть основная камера по умолчанию. Поскольку сам локальный игрок должен это увидеть, я решил, что нет смысла пытаться создать отдельную камеру для каждого игрока на сервере.
Однако, чтобы камера следила за игроком, мне нужно прикрепить ее к игровому объекту игрока. Очевидно, я не могу прикрепить его к сборке игрока, так как это клон, которому должна следовать камера. Но поскольку игрок генерируется компонентом Network Manager, я понятия не имею, как обращаться к этому клону.
То, что я пробовал себя:
public class CameraController : NetworkManager
{
public GameObject playerPrefab;
public Transform target;
private Vector3 offset;
public override void OnServerAddPlayer(NetworkConnection conn, short playerControllerId)
{
GameObject player = (GameObject)Instantiate(playerPrefab, new Vector3(0, 0.5f, 0), Quaternion.identity);
target = player.transform;
NetworkServer.AddPlayerForConnection(conn, player, playerControllerId);
}
void Start()
{
offset = transform.position - target.position;
}
void LateUpdate()
{
transform.position = transform.position + offset;
}
}
Что я нахожу очень странным, так как вы можете ясно видеть, что нет NetworkIdentity компонента на объекте NetworkManager. Я пробовал много вещей в течение последних 4 часов, и я просто не могу этого сделать. Так что теперь я надеюсь, что вы, ребята, можете мне помочь.
Редактировать: так Network Manager обычно порождает игрока. Как вы можете видеть, что нет никакого кода для нее:
Хмм интересный подход. Лемм посмотрю, что я могу с этим сделать. Я дам Вам знать! – icecub
Я пробовал, но камера вообще не размножается. Сначала я получил ошибку, что камера не была привязана к объекту. Он появился и остался неподвижным. Поэтому я прикрепил камеру. Ошибка исчезла, но она больше не порождена, ха-ха. Очевидно, снова, потому что прикрепленная камера является сборной, я думаю .. – icecub
Хмм консоль сообщает мне, что (! IsLocalPlayer) возвращает true .. очевидно, причина, по которой нет камеры .. weird – icecub