手勢 - MRTK2
手勢是以人手為基礎的輸入事件。 MRTK 中有兩種類型的裝置會引發手勢輸入事件:
Windows Mixed Reality 裝置,例如 HoloLens。 這描述捏動作 (“Air Tap”) 和點選和按住手勢。
如需 HoloLens 手勢的詳細資訊,請參閱 Windows Mixed Reality Gestures 檔。
WindowsMixedRealityDeviceManager
包裝 Unity XR。Wsa。Input.GestureRecognizer 會從 HoloLens 裝置取用 Unity 的手勢事件。觸摸屏裝置。
UnityTouchController
包裝支持實體觸摸屏的 Unity Touch 類別 。
這兩個輸入來源都使用手勢 設定 配置檔,分別將 Unity 的觸控和手勢事件轉譯為 MRTK 的輸入動作。 您可以在輸入系統 設定 設定檔下找到此設定檔。
手勢事件
手勢事件是藉由實作其中一個手勢處理程式介面來接收:IMixedRealityGestureHandler
或 IMixedRealityGestureHandler<TYPE>
(請參閱事件處理程序的數據表)。
如需手勢事件處理程式的範例實作,請參閱 範例場景 。
實作泛型版本時, OnGestureCompleted 和 OnGestureUpdated 事件可以接收下列類型的具型別數據:
Vector2
- 2D 位置手勢。 由觸控螢幕產生,以通知其deltaPosition
。Vector3
- 3D 位置手勢。 由 HoloLens 產生,以通知:cumulativeDelta
操作事件的normalizedOffset
導覽事件的
Quaternion
- 3D 旋轉手勢。 可供自定義輸入來源使用,但目前並非由任何現有輸入來源產生。MixedRealityPose
- 結合 3D 位置/旋轉手勢。 可供自定義輸入來源使用,但目前並非由任何現有輸入來源產生。
事件順序
事件有兩個主要鏈結,視使用者輸入而定:
“Hold”:
- 按住點選:
- 啟動 操作
- 按住超過 HoldStartDuration 的點選:
- start Hold
- 釋放點選:
- 完成 保留
- 完成 操作
- 按住點選:
“Move”:
- 按住點選:
- 啟動 操作
- 按住超過 HoldStartDuration 的點選:
- start Hold
- 將手移出 NavigationStartThreshold:
- cancel Hold
- 開始 流覽
- 釋放點選:
- 完成 操作
- 完整 導覽
- 按住點選:
範例場景
HandInteractionGestureEventsExample (Assets/MRTK/Examples/Demos/HandTracking/Scenes) 場景示範如何使用指標 Result 在點擊位置繁衍物件。
GestureTester
(Assets/MRTK/Examples/Demos/HandTracking/Script)腳本是透過GameObjects將手勢事件可視化的範例實作。 處理程式函式會變更指針對象的色彩,並在場景中的文字物件中顯示最後一個記錄的事件。