Unity [UNET] Синхронизация преобразования объекта, не связанного с игроком, не работает

Я пытаюсь синхронизировать преобразование одного игрового объекта, не являющегося игроком, в Unity с помощью UNET. В основном у меня есть игрок, который может пойти против этого объекта и переместить его, и я хочу, чтобы преобразование этого объекта изменялось одинаково как на сервере, так и на клиенте.

Я следил за учебником https://unity3d.com/learn/tutorials/topics/multiplayer-networking/handling-non-player-objects?playlist=29690 и может заставить пример player + bullet работать хорошо. Затем я создал новый объект, добавил к нему Network Identity с полномочиями локального игрока и Network Transform (обновление 1 сек), создал префаб и добавил его в Network Manager как «Registered Spawnable Prefab».

Думал, что этого будет достаточно, но это не работает, поскольку преобразование объекта не обновляется одинаково как на сервере, так и на клиенте. На сервере столкновение очень странное (например, прямое движение против объекта заставляет его иногда отскакивать), но объект можно переместить в определенное место и остаться там. На стороне клиента, когда игрок касается объекта, столкновение происходит очень плавно, а затем объект имеет своего рода магнитный эффект, который всегда возвращает его к преобразованию объекта, находящегося на стороне сервера.

Я проверил следующие вопросы: 1) Unity [UNET] Синхронизация преобразования объекта, не относящегося к игроку 2) Как синхронизировать свойства GameObject, не относящиеся к игроку, в UNet / Unity5? и 3) UNET - Sync. скрипт для цвета на объекте, не являющемся игроком, но я не могу понять решение в 1) и как использовать SyncVar для синхронизации преобразований (и если это действительно лучшее решение)

Я также попробовал описанный выше учебник Unity по настройке моего объекта точно так же, как и в случае с противником, но он также не помогает синхронизировать преобразования как на клиенте, так и на сервере.

Я уверен, что делаю что-то очень глупое, поэтому любые подсказки приветствуются!


person jaraujo    schedule 23.02.2018    source источник


Ответы (2)


Важно .. на 2018 год ..

мы определили

Есть некоторая нестабильность с NetworkTransform, если вы используете localhost во время разработки, возможно, особенно на Mac.

это настоящая ПИТА. Обязательно протестируйте в обычной локальной сети на нескольких машинах.

person Fattie    schedule 10.08.2018

Нашел решение. Каким-то образом компонент Network Transform в объекте был установлен на «Sync 3D Rigid Body» вместо «Sync Transform» в параметре «Transform Sync Mode». Переход на синхронное преобразование вместо этого решил проблему, и «магнитный» или «эластичный» эффект больше не возникает.

person jaraujo    schedule 26.02.2018