输入
有两种方法可以在visionOS上获取用户意图:3D触摸和骨骼手追踪。在独占模式下,开发人员还可以访问头部跟踪数据。
3D Touch和TouchSpace
在有界和无界的体积中,当用户看着带有输入碰撞体的对象并做出“pinch”(同时触摸拇指和食指“tap”或“drag”)手势时,就会提供3D触摸输入。SpatialPointerDevice Input device 向开发人员提供该信息。如果用户保持捏合手势,则会启动拖动,并向应用程序提供相对于原始起点的“move”更新。如果对象在触手可及的范围内(无需特定凝视),用户还可以直接在对象上执行捏合手势。
3D触摸事件通过SpatialPointerDevice Input device暴露,该设备构建在“com.unity.inputsystem”软件包之上,也称为新输入系统。绑定到触摸屏设备的现有操作应该适用于2D输入。对于3D输入,用户可以将动作绑定到特定的SpatialPointerDevice设备以获得3D位置向量。
任何可以接收 3D 触摸事件的对象都需要将碰撞遮罩设置为PolySpatial输入层的碰撞体。仅报告对这些事件的接触。目前,平台不会在点击手势开始时提供凝视光线。
该输入设备有一个名为VisionOSSpatialPointerDevice的VR对应设备。两者之间的主要区别在于交互不需要碰撞体。因此,VisionOSSpatialPointerDevice 缺少与交互相关的输入控件(“targetId”、“interactionPosition”等)。
Skeletal Hand Tracking
骨骼手跟踪由XR Hands Package中的hand Subsystem提供。使用场景中的Hand Visualizer组件,用户可以显示玩家的手的蒙皮网格或每个关节的几何形状,以及基于手的物理交互的物理对象。用户可以直接针对Hand Subsystem编写C#脚本来推断骨骼之间的距离和关节角度。Hand Visualizer组件的代码可在XR Hands Package中获得,并且可以作为使用Hand Subsystem的代码的一个很好的起点。
Head Tracking
头部跟踪由ARKit通过VisionOS Package提供。这可以使用移动 AR 的创建菜单在场景中进行设置:Create > XR > XR Origin (Mobile AR)。姿态数据通过新的输入系统从devicePosition [HandheldARInputDevice] **和deviceRotation [HandheldARInputDevice]**获取。
XR 交互工具包
要将 XR 交互工具包与 PolySpatial 结合使用,请使用“com.unity.polyspatial.xr”中提供的 XRTouchSpaceInteractor。此自定义交互器使用SpatialPointerDevice来"short-circuit"正常的光线投射或碰撞体重叠测试,以确定选择的Interactable。相反,它使用“targetId”输入控件来获取对捏/戳手势所针对的 Interactable的直接引用。