Страница 1 из 1

Проблема синхронизации при создании нового игрока

СообщениеДобавлено: 10 авг 2014, 18:06
heemun
Всем привет.
Задавал этот вопрос уже и на английском форуме и на форуме exitgames, но ответа не получил.

Начал с Marco Polo туториала на сайте exitgames: http://doc.exitgames.com/en/pun/current ... c317517599

Вроде все хорошо, монстры респаунятся, бегают, прыгают, все хорошо.
Пробую на основе этого сделать тоже самое у себя только с кубиками (камера только за игроком не следует, статична). Тоже вроде все неплохо, кубики двигаются, поворачиваются, разные игроки видят друг друга.

Но есть одна проблема: при появлении нового игрока на сцене, все уже присутствующие кубики (игроки) для него оказываются в начале координат. Это происходит непосредственно при создании нового игрока, в следующий же миг ранее созданные игроки перемещаются в свои настоящие позиции. При этом, если наблюдать игру от "старого" игрока, то его позиция как была, так и есть. Т.е. тут проблема именно в создаваемом игроке, для него почему-то в начальный момент времени все игроки оказываются в начальной же точке.

Кто-нибудь может подсказать, в чем проблема?

Игрока создаю и включаю скрипт его управление так:
Синтаксис:
Используется csharp
GameObject player = PhotonNetwork.Instantiate("Cube", Vector3.zero, Quaternion.identity, 0);
CubeController controller = player.GetComponent<CubeController>();
controller.enabled = true;

Re: Проблема синхронизации при создании нового игрока

СообщениеДобавлено: 24 авг 2014, 15:38
chapaeff
PhotonView на игроках есть?

Re: Проблема синхронизации при создании нового игрока

СообщениеДобавлено: 17 сен 2014, 20:28
PygbIK
Если мне память не изменяет, то проблема в том что ты повесил в photon view следить не за NetworkController'ом ( ThirdPersonNetwork, ну или как ты обозвал скрипт отвечающих за синхронизацию и сериализацию), а скрипт контроллера персонажа или какой-то другой. Кинь скрин с инспектора префаба Player'a.

П.с. могу ошибаться, но с проблемой сталкивался и не помню как решил :)

Re: Проблема синхронизации при создании нового игрока

СообщениеДобавлено: 18 сен 2014, 13:49
frozencat
Все верно. Игроки появляются в Vector3.zero, т.е. в 0, потом происходить процесс получения текущих координат и они меняются на актуальные.
Вариант №1 создавать вне видимой области и потом синхронизировать.
Вариант №2 показывать Мэш и коллайдер после синхронизации.
Вариант №3 "переносить игрока (камеру) к полю" после синхронизации
Вариант №4 ... придумать что-нибудь еще...