Проблема с обновлением позиции захватываемого 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), но пока результаты кажутся многообещающими.

Другие вопросы по тегам