空間マッピングのよくあるトラブルシューティングの問題
Windows Mixed Reality の入力

Unity の XR 入力

このセクションでは、VR、AR、MR アプリケーションのインタラクションに使われる Unity が対応しているすべての入力デバイスについての情報を提供します。

XR 入力マッピング

XR 入力機能には、古い入力軸とボタンのインデックスからアクセスできます。以下の表は、各プラットフォームで各機能がどのようにマッピングされているかを示しています。ボタン/ジョイスティック軸の使用方法については、一般的なゲーム入力 を参照してください。

機能 機能タイプ 古い入力インデックス[L/R] WMR Oculus GearVR Daydream OpenVR (全般) Vive OpenVR (Oculus) OpenVR (WMR)
主要 2D 軸 2D 軸 [(1,2)/(4,5)] ジョイスティック ジョイスティック ジョイスティック タッチパッド [トラックパッド/ジョイスティック] トラックパッド ジョイスティック ジョイスティック
トリガー [9/10] トリガー トリガー トリガー トリガー トリガー トリガー トリガー トリガー
グリップ [11/12] グリップ グリップ グリップ グリップ グリップ グリップ グリップ
人差し指のタッチ [13/14] 人差し指 - 接近
親指のタッチ [15/16] 親指 - 接近
補助的な 2D 軸 2D 軸 [(17,18)/(19,20)] タッチパッド タッチパッド
人差し指 [21/22] 人差し指
中指 [23/24] 中指
薬指 [25/26] 薬指
小指 [27/28] 小指
組み合わされたトリガー [3/3] 組み合わされたトリガー 組み合わされたトリガー 組み合わされたトリガー 組み合わされたトリガー 組み合わされたトリガー 組み合わされたトリガー
主要ボタン ボタン [2/0] [X/A] アプリケーション 主要 主要 主要 [Y/B] メニュー
主要タッチ ボタン [12/10] [X/A] - タッチ
補助的なボタン ボタン [3/1] [Y/B] 代替 代替 [B/A]
補助的なタッチ ボタン [13/11] [Y/B] - タッチ
グリップボタン ボタン [4/5] グリップ - 押す グリップ - 押す グリップ - 押す グリップ - 押す グリップ - 押す グリップ - 押す グリップ
トリガーボタン ボタン [14/15] トリガー - 押す 人差し指 - タッチ トリガー - 押す トリガー - 押す トリガー - 押す トリガー - 押す トリガー - タッチ トリガー - 押す
メニューボタン ボタン [6/7] メニュー スタート(6)
主要 2 D 軸クリック ボタン [8/9] ジョイスティック - クリック サムスティック - クリック タッチパッド - クリック タッチパッド - クリック スティックまたはパッド - 押す スティックまたはパッド - 押す スティックまたはパッド - 押す タッチパッド - クリック
主要 2D 軸タッチ ボタン [16/17] タッチパッド - クリック サムスティック - タッチ タッチパッド - タッチ タッチパッド - タッチ スティックまたはパッド - タッチ スティックまたはパッド - タッチ スティックまたはパッド - タッチ タッチパッド - タッチ
サムレスト ボタン [18/19] タッチパッド - タッチ サムレスト - タッチ

XRレガシー入力システム経由の入力

上記のテーブルから適切な古い入力インデックスを使用して、古い入力システム通して、XR 入力機能を調べることができます。 Edit > Settings > Input で軸マッピングを作成し、プラットフォームデバイスの機能に関し、入力名から軸インデックスに適切なマッピングを追加できます。ボタンや軸の値は Input.GetAxis または Input.GetButton にマップした軸やボタン名を渡して、取得できます。

ハプティクス

現在追跡している XRNode の入力デバイスの取得が可能です。追跡する XRNode に有効な入力デバイスがある場合、Unity はハプティックデータを対応する入力デバイスに送信し、その着用者に没入型フィードバックを提供します。Unity は、振幅と持続時間を持つ簡単なインパルスとして、または、データのバッファとして触覚データを送信できます。

すべてのプラットフォームがすべてのタイプのハプティクスに対応しているわけではありませんが、デバイスにハプティックの能力を照会することができます。以下の例では、右手用の入力デバイスを使用し、デバイスがハプティクスに対応できるかどうかを確認します。次に、それが可能な場合は、刺激を再生します。

InputDevice device = InputDevices.GetDeviceAtXRNode(XRNode.RightHand);
HapticCapabilities capabilities;
if(device.TryGetHapticCapabilities(out capabilities))
{
    if(capabilities.supportsImpulse)
    {
        uint channel = 0;
        float amplitude = 0.5f;
        float duration = 1.0f;
        device.SendHapticImpulse(channel, amplitude, duration);
    }
}

注意: このコードサンプルは UnityEngine.XR 名前空間を使用しています。


空間マッピングのよくあるトラブルシューティングの問題
Windows Mixed Reality の入力