入力アクション — MRTK2
Input Actionsは、入力を生成する特定の入力ソースからアプリケーション ロジックを分離するための作業入力を抽象的に行えるようにするものです。 たとえば、 [選択] アクションを定義して、マウスの左ボタン、ゲームパッドのボタン、6 つの DOF コントローラーのトリガーにマップすると便利な場合があります。 これにより、アプリケーション ロジックが [選択] 入力のアクション イベントをリッスンするようになり、それを生み出すことができるすべての異なる入力を認識する必要がなくなります。
入力アクションの作成
入力アクションは、Mixed Reality Toolkit ツールキット コンポーネントの入力システム プロファイル内の入力アクション プロファイルで構成され、アクションの名前と、マップ可能な入力の種類 (軸の制約) を指定します。
![入力アクション](../images/input/inputactions.png?view=mrtkunity-2022-05)
軸の制約で最もよく使用される値を次に示します。
軸の制約 | 説明 |
---|---|
デジタル | ゲームパッドまたはマウスのバイナリ ボタンのようなオン/オフの入力。 |
1 つの軸 | ゲームパッドのアナログトリガーのような 1 つの軸のアナログ入力。 |
デュアル軸 | サムスティックのようなデュアル軸のアナログ入力。 |
6 つの DOF | 6 つの DOF コントローラーによって生成されるような平行移動と回転を備えている 3D 姿勢。 |
完全な一覧については、「AxisType
」を参照してください。
アクションへの入力のマッピング
入力をアクションにマップする方法は、入力ソースの種類によって異なります。
コントローラーの入力
[入力システム プロファイル] の下にある [コントローラー入力マッピング プロファイル] にアクセスします。 サポートされているすべてのコントローラーの一覧が表示されます。
![入力マップ プロファイル](../images/input/controllerinputmappingprofile.png?view=mrtkunity-2022-05)
構成するものを選択すると、ダイアログ ウィンドウがすべてのコントローラー入力と共に表示され、それぞれに対してアクションを設定できます。
![入力アクションの割り当て](../images/input/inputactionassignment.png?view=mrtkunity-2022-05)
音声入力
音声コマンド プロファイルの、入力システム プロファイルの下に、現在定義されている音声コマンドの一覧が表示されます。 そのうちの 1 つをアクションにマップするには、[アクション] ドロップダウンで選択するだけです。
![Speech Commands プロファイル](../images/input/speechcommandsprofile.png?view=mrtkunity-2022-05)
ジェスチャ入力
[入力システム プロファイル] の下にある [ジェスチャ プロファイル] には、定義されているジェスチャがすべて含まれています。 [アクション] ドロップダウンで選択して、それぞれをアクションにマップできます。
![ジェスチャ プロファイル](../images/input/gestureprofile.png?view=mrtkunity-2022-05)
入力アクションの処理
警告
現在、このセクションで説明するメソッドを使用して処理できるのは、デジタル型の入力アクションだけです。 その他のアクションの種類については、その代わりに対応する入力のイベントを直接処理する必要があります。 たとえば、コントローラー入力にマップされた 6 つの DOF アクションを処理するには、IMixedRealityGestureHandler<T>
を T = MixedRealityPose
と共に使用する必要があります。
入力アクションを処理する最も簡単な方法は、InputActionHandler
スクリプトを使用することです。 これにより、リッスンするアクションを定義し、Unity イベントを使用してアクションの開始イベントと終了イベントに応答することができます。
![Acton ハンドラー](../images/input/inputactionhandler.png?view=mrtkunity-2022-05)
より詳細な制御が必要な場合は、 IMixedRealityInputActionHandler
インターフェイスをスクリプトで直接実装できます。 ハンドラー インターフェイスを介したイベント処理の詳細については、「入力イベント」のセクションを参照してください。
使用例
アクションを作成し、コントローラー、音声とジェスチャの入力にマップし、それを使用してコマンドでオブジェクトを回転させる方法を示すシーンの例については、「MRTK/Examples/Demos/Input/Scenes/InputActions
」を参照してください。
![入力アクションの例](../images/input/inputactionsexample.png?view=mrtkunity-2022-05)