开发

射线交互

更新时间: 2025年11月4日

设计守则:提供舒适的手势追踪体验对于创建沉浸式娱乐应用至关重要。请参阅页面底部的设计守则,了解最佳实践以及如何最大程度地降低用户不适的风险。

光线互动使用一条光线来选择对象,该光线的发射来源为您在手上或控制器上定义的一个点。当光线悬停在一个对象上时,如要触发选择,光线互动将使用 RayInteractor 中指定的一个选择机制。该选择机制可以是任何事物,比如按钮、手势或语音命令,只要该机制实现了 ISelector 即可,因为 ISelector 用于为互动传播选择和发布事件。
注意:如果您刚开始使用 Meta XR 功能,我们建议您使用功能模块(Meta XR SDK 的一个 Unity 扩展)将相关功能快速添加到您的项目中。

RayInteractor

RayInteractor 定义一次光线互动中光线投射的起点和方向,以及互动的最大距离。由于未提供选择机制,RayInteractor 必须与选择工具搭配使用。

RayInteractable

RayInteractable 定义要被投射光线的对象的表面。(非必要操作)可以在选择时提供第二个表面来接收光线投射。RayInteractable 的一个用例是用于拖到画布边缘之外,其中拖动是从画布上开始,然后继续拖至画布之外。

使用 Unity 画布的光线互动

RayInteractable 可以与 PointableCanvas 组合使用,以实现使用 Unity 用户界面进行光线互动。如需具体操作方法,请参阅创建曲面或平面的用户界面

使用手的光线互动

对于手,我们建议使用 HandPointerPose 组件来指定 RayInteractor 的起点和方向。该组件使用系统定义的指针姿势。
注意:指针姿势的起点靠近手腕根部,与视觉位置不同。视觉位置用于提供纯视觉的捏合操作网格提示,即进行光线互动时出现在食指和拇指之间的一种泪滴形网格。

调试光线互动

RayInteractorDebugGizmos 组件可用于可视化一个给定 RayInteractor 的光线和光线互动工具状态。

了解更多

设计指南

手势

核心互动

  • 输入映射:了解输入映射如何衔接不同模式和互动类型。
  • 输入层级结构:了解不同的输入层级结构。
  • 多模态:了解多模态。
  • 射线投射:了解通过射线投射实现间接互动的方式。
  • 触摸:了解通过触摸实现直接互动的方式。
  • 抓取:了解用于对象操纵的抓取互动。
  • 微手势:了解微手势互动。