Cursor.lockState работает иначе в Unity, чем в моей сборке WebGL

В Unity Cursor.lockState = CursorLockMode.Locked; перемещает курсор в центр экрана, скрывает курсор и фиксирует его там. Это очень полезно, потому что я использую FPScontroller, чтобы иметь возможность смотреть вокруг и взаимодействовать с элементами пользовательского интерфейса в трехмерном пространстве, наводя на них перекрестие и направляя луч.

Проблема в том, что когда я загружаю проект на simmer.io, он немного по-другому в браузере. Переключение между Cursor.lockState = CursorLockMode.none; и Locked работает, за исключением того, что курсор заблокирован в своей текущей позиции - он никогда не перемещается обратно в центр экрана, т.е. где мой перекрестие. Как только скрытый курсор и перекрестие смещены, все мои команды наведения указателя мыши и raycast перестают работать.

Для желающих проект можно найти здесь. Чтобы проверить ошибочное поведение, используйте TAB для переключения меню паузы. https://simmer.io/@AndreM/archtour


person Andre Malan    schedule 03.12.2019    source источник
comment
Зачем нужно, чтобы курсор был точно по центру? Обычно в играх с заблокированным состоянием от первого лица для управления перекрестием / камерой следует использовать дельту мыши.   -  person Erik Overflow    schedule 04.12.2019
comment
Есть объекты gameObject, на которые я хочу ответить функции OnMouseEnter. Оглядываясь назад, я понял, что это была моя единственная причина. Так что, возможно, если я решу это по-другому, я смогу избавиться от этой проблемы.   -  person Andre Malan    schedule 04.12.2019


Ответы (1)


Simmer.io использует модификаторы UnityPlayer.js, и его поведение может отличаться от ожидаемого поведения в стандартной сборке Unity WebGL. Вместо этого свяжитесь с ними с этой проблемой. Как правило, в Chrome возникают ошибки при использовании таких расширенных функций.

person DoctorPangloss    schedule 04.12.2019