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