Компонент cursor отвечает за управление взаимодействием
пользователя с объектами сцены в виртуальной реальности и
3D-интерфейсах. Он позволяет определять точку взаимодействия на
поверхности объектов, реагировать на клики, наведении и другие события,
обеспечивая функционал “указателя” внутри сцены.
В A-Frame компонент cursor обычно используется совместно
с camera или hand-controls, чтобы
визуализировать положение указателя в пространстве. Типичная структура
подключения:
<a-entity camera look-controls>
<a-entity cursor="fuse: true; fuseTimeout: 1500"
position="0 0 -1"
geometry="primitive: ring; radiusInner: 0.01; radiusOuter: 0.02"
material="color: black; shader: flat">
</a-entity>
</a-entity>
Здесь ключевые параметры:
ring) для VR-интерфейсов.Прямой курсор (raycast) Основной тип курсора, который создаёт невидимую линию (луч) из позиции камеры или контроллера к объектам сцены. С его помощью можно определять пересечения с объектами. Этот метод является стандартным в VR и AR.
Курсор с fuse (автоклик) Используется в
устройствах без физической кнопки, например в очках VR. При наведении на
объект курсор запускает таймер и автоматически инициирует событие после
истечения заданного времени (fuseTimeout).
Курсор с событием клика Позволяет привязывать
события к действию пользователя, например click,
mouseenter, mouseleave. Это позволяет
создавать интерактивные интерфейсы.
События курсора обрабатываются через стандартные DOM-события. Основные события:
Пример использования:
<a-box position="0 1 -3" color="#4CC3D9"
event-set__mouseenter="_event: mouseenter; color: red"
event-set__mouseleave="_event: mouseleave; color: #4CC3D9">
</a-box>
Здесь через компонент event-set меняется цвет объекта
при наведении и уходе курсора.
Компонент cursor тесно связан с raycaster,
который определяет пересечения с объектами сцены. Обычно курсор
автоматически создаёт луч, но можно настроить его вручную:
<a-entity camera look-controls>
<a-entity cursor="rayOrigin: mouse" raycaster="objects: .clickable">
</a-entity>
</a-entity>
Параметры rayOrigin:
Параметр objects указывает, с какими объектами должен
взаимодействовать луч (.clickable — класс объектов).
Для повышения UX курсор часто визуализируется в виде кольца, точки
или другой формы. Настройка внешнего вида осуществляется через
geometry и material:
<a-entity cursor="fuse: true"
geometry="primitive: ring; radiusInner: 0.005; radiusOuter: 0.01"
material="color: yellow; shader: flat">
</a-entity>
Можно использовать анимацию для изменения размера или цвета курсора при наведении:
<a-entity cursor="fuse: true" geometry="primitive: ring; radiusInner: 0.005; radiusOuter: 0.01"
material="color: yellow; shader: flat"
animation__mouseenter="property: scale; to: 1.5 1.5 1; startEvents: mouseenter"
animation__mouseleave="property: scale; to: 1 1 1; startEvents: mouseleave">
</a-entity>
raycaster.mouseenter,
mouseleave и click для совместимости с другими
компонентами A-Frame.Эта система взаимодействия является основой для создания интерактивных VR-сцен, позволяя пользователю управлять объектами, интерфейсами и навигацией без сложных скриптов, используя только конфигурацию компонентов A-Frame.