Моя идея - сделать многопользовательскую игру, основанную на физике и столкновениях. Все перемещения персонажей создаются перемещениями и вращением основного тела. Я имею в виду, что у меня есть Сфера в качестве основного тела, Плечи как ребенок с фиксированным твердым телом, руки как дети, связанные с Персональным Соединением с плечами. Меч (на том же уровне, что и тело) Соединен с Characted Суставом с рукой, Камера (на том же уровне, что и тело) со сценарием Следовать за телом. И все это находится под Пустым Объектом Игрока. OriginalPrefab
Это должно быть префабом Player для сети, однако я столкнулся с трудностями при синхронизации всех частей проигрывателя на сервере, поскольку только родительский GameObject может иметь NetworkIdentity и NetworkTransform.
Таким образом, я решил создать части тела, пока играю на сервере. Префаб EmptyPlayer содержит скрипт с методом [Command] void CmdPlayerSpawn (), который связывает ссылки на префабы, подключенные в инспекторе, и их NetworkServer.SpawnWithClientAuthority. Кроме того, были добавлены ссылки Суставов (Меч к руке) (Камера, которая следует за телом) Измененный префаб
[Command]
void CmdPlayerSpawn()
{
_body = (GameObject)Instantiate(body, transform.position, Quaternion.identity);
NetworkServer.SpawnWithClientAuthority(_body, connectionToClient);
_sword = (GameObject)Instantiate(sword, _body.transform.Find("LeftGlove").position + Vector3.up, Quaternion.Euler(0,0,0));
NetworkServer.SpawnWithClientAuthority(_sword, connectionToClient);
_sword.GetComponent<CharacterJoint>().connectedBody = _body.transform.Find("LeftGlove").GetComponent<Rigidbody>();
_camera = (GameObject)Instantiate(camera, transform.position+ Vector3.up*8, Quaternion.Euler(40,0,0));
NetworkServer.SpawnWithClientAuthority(_camera, connectionToClient);
_camera.GetComponent<CameraBehaviour>().objectToFollow = _body;
Cameralink = _camera.GetComponent<Camera>();
}
AAAND. Я пытаюсь играть. Пока играешь как хозяин, все идет хорошо. Игрок довольно ... играбелен. НО, как только я подключаюсь из другой симуляции в качестве Клиента, клиентская игра вылетает (выбрасывает NullReferenceExeptions) и Spawns 2 PlayerObjects (LMAO) ((это видно на учетной записи основного игрока lol). Я действительно не могу понять, как выполнить мою идею.
Играя за Хозяина
Отвечает за клиента
Может быть, вы мне поможете?