Если коротко:
Лазерный указатель VR-интерфейса строится из pose источника, raycast и action выбора. Попадание луча переводит цель в hover, нажатие запускает select, а отдельное действие может вызвать activate. Пользователь должен видеть направление, доступную цель и подтверждение нажатия; UI и объекты мира требуют явного приоритета, чтобы один ввод не активировал две цели.
VR UI laser pointer состоит из направления руки или взгляда, raycast и input action. Видимая линия — лишь обратная связь: без цели и привязанной button она ничего не нажимает.
От луча до события
Ray interactor формирует луч и попадания. Ближайшая цель получает hover. Select начинает выбор, а activate вызывает дополнительную функцию выбранной цели. Названия API зависят от версии.
OpenXR отделяет action от физической button: runtime связывает select с доступным controller. Не зашивайте одну кнопку как единственный ввод.
UI и объекты мира
В Unity world-space Canvas использует Tracked Device Graphic Raycaster и XR UI Input Module. Для 3D interactable работает физический raycast. Задайте masks, blocking и правило ближайшего попадания, чтобы UI не выбрал предмет за панелью.
Архитектура Interactor/Interactable разобрана в статье об XRI, а bindings — в материале об OpenXR.
Визуальная обратная связь
Показывайте ray только когда он полезен. Меняйте reticle при попадании, обозначайте disabled state и подтверждайте select звуком либо haptic. Hover не должен выглядеть как нажатие.
Для доступности увеличьте hit area, сгладьте дрожание, предложите dwell select и controller navigation. Не полагайтесь только на цвет; проверьте интерфейс обеими руками.
Проверьте направление pointer, цель в фокусе, способ выбора и результат select.