Я пытаюсь синхронизировать преобразование одного игрового объекта, не являющегося игроком, в 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 по настройке моего объекта точно так же, как и в случае с противником, но он также не помогает синхронизировать преобразования как на клиенте, так и на сервере.
Я уверен, что делаю что-то очень глупое, поэтому любые подсказки приветствуются!