Проблема с обновлением позиции захватываемого GameObject в VR Scene с помощью PUN2 и Unity3D
Я пытаюсь добавить поддержку PUN2 в простую стартовую сцену Oculus (кубики на столе). Я смог запустить официальную синхронизацию аватара поверх моей базовой настройки Photon2.
Это текущая последовательность:
Игрок 1 ( P1 - тот, кто использует Quest) создает комнату и присоединяется к ней.
Игрок 2 (P2 - тот, кто использует Unity Player) присоединяется к комнате
Игрок 1 берет куб и перемещает его.
P2 видит, что куб движется нормально, если P1 просто перетаскивает его по горизонтали, но если он пытается поднять его со стола, куб кажется сумасшедшим с точки зрения P2.
Похоже, что куб борется с гравитацией, но я не совсем понимаю, что происходит. В этом видео вы можете увидеть пример чередования горизонтального перетаскивания и подъема из таблицы: https://gofile.io/?c=A9PN41
Если я отключу гравитацию на кубе, он будет работать нормально (хотя интерполяция немного медленнее по сравнению с тем, как P1 перемещает объект): https://gofile.io/?c=jM4qEE
Дело в том, что у меня не может быть кубиков, летающих по сцене:)
Использование Unity 2019.1 / PUN2 / Oculus Quest
1 ответ
Что касается записей, я выяснил, в чем проблема, но все еще работаю над полным решением. Когда P1 манипулирует объектом (синхронизируется между клиентами, использующимиPhoton Transform View
), P2 видит, как куб пытается синхронизировать свое положение / вращение, борясь с гравитацией (создавая это странное нервное поведение).
После обширного исследования я обнаружил возможный подход, который мог бы решить проблему:
- Добавить
Photon Rigid Body View
(синхронизация скорости и угловой скорости) - Добавьте RPC (активируется во время манипуляции), который:
- Отключает гравитацию
- Позволяет
isKinematic
- Передайте право собственности игроку, который манипулирует объектом.
Это необходимо полностью протестировать на обоих клиентах (Master / Normal), но пока результаты кажутся многообещающими.