Unity的输入移植指南

可以使用以下两种方法之一将输入逻辑移植到 Windows Mixed Reality:

常规 Input.GetButton 和 Input.GetAxis API

Unity当前使用其常规 Input.GetButton API 和 Input.GetAxis API 公开 Oculus SDKOpenVR SDK 的输入。 如果你的应用已经使用这些 API 进行输入,则这些 API 是支持 Windows Mixed Reality 中运动控制器的最简单路径。 只需在输入管理器中重新映射按钮和轴即可。

有关详细信息,请参阅Unity按钮/轴映射表常见Unity API 概述。

重要

如果使用 HP Reverb G2 控制器,请参阅 Unity 中的 HP 混响 G2 控制器以获取进一步的输入映射说明。

XR 输入 API

Unity版本已逐步淘汰 XR。支持 XR SDK 的 WSA API。 对于新项目,最好从一开始就使用 XR 输入 API。 有关详细信息,请参阅 Unity XR 输入

如果应用已为每个平台生成自定义输入逻辑,则可以使用 UnityEngine.InputSystem.XR 命名空间中的特定于 Windows 的空间输入 API。 这些 API 使你能够访问更多信息(例如位置准确性或源类型),以在 HoloLens 上区分手部和控制器。

注意

如果使用 HP Reverb G2 控制器,除 之外 InteractionSource.supportsTouchpad,所有输入 API 将继续工作,后者返回 false 且没有触摸板数据。

抓地力姿势和指针姿势

Windows Mixed Reality支持不同外形规格的运动控制器。 每个控制器的设计在用户手部位置和应用在呈现控制器时用于指向的自然向前方向之间的关系上有所不同。

为了更好地表示这些控制器,可以调查每个交互源的两种姿势: 抓地力姿势指针姿势。 以Unity世界坐标表示所有姿势坐标。

抓地力姿势

抓地力姿势表示 HoloLens 检测到的手掌位置,或手掌握有运动控制器的位置。 在沉浸式头戴显示设备上,使用此姿势呈现用户的手或用户手中拿着的对象,如剑或枪。

  • 抓地力位置是自然握住控制器时的手掌质心,向左或向右调整以将手柄内的位置居中。
  • 抓地力方向的右轴是手掌正常光线,从左手掌向前,从右手掌向后,当你完全张开手形成一个扁平的五指姿势时。
  • 抓地力方向的前向轴是当你部分闭合手时,通过非拇指手指形成的管向前指向的光线,就像拿着控制器一样。
  • 抓地力方向的向上轴是右向和向前定义所暗示的向上轴。

通过Unity的 XR 访问抓地力姿势。InputTracking.GetNodeStates API,如 XRNodeState.TryGetPositionXRNodeState.TryGetRotation

指针姿势

指针姿势表示控制器向前指尖。 呈现控制器模型本身时,此姿势最适合用于光线投射指向 UI。

指针姿势在 Unity中只能通过特定于 Windows MR 的 API sourceState.sourcePose.TryGetPosition/Rotation(作为 参数传入InteractionSourceNode.Pointer)提供。

另请参阅