Unity represents VR controller inputs as separate joysticks. Use the UnityEngine.Input class to access button and axis values. The OpenVR Unity integration doesn’t refer to any specific hardware when presenting axis and button states.
This page provides the axis and button mappings for the three types of controllers supported by OpenVR:
Note: Unity doesn’t support individual finger tracking information for Valve Index controllers.
正しく設定され接続されると、OpenVR 互換コントローラーはすべて内部的に、OpenVR Controller - Left または OpenVR Controller - Right のいずれかに命名されます。この名前には、UnityEngine.Input.GetJoystickNames() によって返されたリストを通してアクセスします。利用可能な場合、これらのコントローラーは Steam でテストされたときに SteamVR ステータスメニューの緑色でハイライト表示されます。このメニューにアクセスするには、Steam と SteamVR の両方をマシンにインストールして実行する必要があります。
スクリプトを使ってジョイスティック名のリストでこれらのコントローラーの存在を定期的にチェックして、それらが使用可能であるかをテストできます。コントローラーの電源がオフであったり、バッテリーがなくなると、UnityEngine.Input.GetJoystickNames() によって返されるリストの名前が空の文字列に変わります。コントローラーの電源を再びオンにすると、その名前がリストに再表示されます。
This section provides mapping information for each type of controller that OpenVR devices supports.
下の図は、VR アプリケーションで使用する HTC Vive コントローラーで使用可能な様々な入力を表示しています。
1 | メニューボタン |
---|---|
2 | トラックパッド |
3 | システムボタン |
4 | ステータスライト |
5 | マイクロ USB ポート |
6 | トラックセンサー |
7 | トリガー |
8 | グリップボタン |
下の図は、VR アプリケーションで使用する Oculus Touch コントローラーで使用可能な様々な入力を表示しています。
下の表は各 OpenVR がサポートするコントローラー、インタラクションタイプ、Unity の軸とボタンの ID、各軸の値の範囲を表しています。
HTC Vive コントローラー | Oculus Touch コントローラー | Valve Index Controller | インタラクションタイプ | Unity Button ID | Unity Axis ID | Unity Axis 値の範囲 |
---|---|---|---|---|---|---|
Left Controller Menu Button (1) | Button.Three | Left Controller Inner Face Button | 押す | 2 | ||
Right Controller Menu Button (1) | Button.One | Right Controller Inner Face Button | 押す | 0 | ||
Left Controller Outer Face Button | 押す | 3 | ||||
Right Controller Outer Face Button | 押す | 1 | ||||
Left Controller Trackpad (2) | Button.PrimaryThumbstick | Left Controller Trackpad | 押す | 8 | ||
Right Controller Trackpad (2) | Button.SecondaryThumbstick | Right Controller Trackpad | 押す | 9 | ||
Left Controller Trackpad (2) | Button.PrimaryThumbstick | Left Controller Trackpad | 接触 | 16 | ||
Right Controller Trackpad (2) | Button.SecondaryThumbstick | Right Controller Trackpad | 接触 | 17 | ||
Left Controller Trackpad (2) | Axis2D.PrimaryThumbstick | Left Controller Trackpad | 水平移動 | 1 | –1.0 から 1.0 | |
Left Controller Trackpad (2) | Axis2D.PrimaryThumbstick | Left Controller Trackpad | 垂直移動 | 2 | –1.0 から 1.0 | |
Right Controller Trackpad (2) | Axis2D.SecondaryThumbstick | Right Controller Trackpad | 水平移動 | 4 | –1.0 から 1.0 | |
Right Controller Trackpad (2) | Axis2D.SecondaryThumbstick | Right Controller Trackpad | 垂直移動 | 5 | –1.0 から 1.0 | |
Left Controller Trigger (7) | Axis1D.PrimaryIndexTrigger | Left Controller Trigger | 接触 | 14 | ||
Right Controller Trigger (7) | Axis1D.SecondaryIndexTrigger | Right Controller Trigger | 接触 | 15 | ||
Left Controller Trigger (7) | Axis1D.PrimaryIndexTrigger | Left Controller Trigger | 握る | 9 | 0.0 から 1.0 | |
Right Controller Trigger (7) | Axis1D.SecondaryIndexTrigger | Right Controller Trigger | 握る | 10 | 0.0 から 1.0 | |
Left Controller Grip Button (8) | Axis1D.PrimaryHandTrigger | Left Controller Grip Average | 握る | 11 | 0.0 から 1.0 | |
Right Controller Grip Button (8) | Axis1D.SecondaryHandTrigger | Right Controller Grip Average | 握る | 12 | 0.0 から 1.0 |
OpenVR デバイスをサポートするアプリケーションを開発する場合は、3 つのコントローラーすべてのボタンの入力イベントトリガーとレスポンスレートの違いに注意することが重要です。
Unity Touch の Input イベントは、各プラットフォームのコントローラーによって異なります。
The grip trigger differs between HTC Vive and Oculus Touch controllers as follows:
HTC Vive コントローラーには両サイドに Grip ボタンがありますが、両方とも同じ軸にマッピングされます。押されていないときの値は 0.0 で、押されたときの値は 1.0 です (0.0 と 1.0 の間の値はありません)。
Oculus Touch コントローラーのグリップは、範囲が 0.0 から 1.0 のアナログトリガーです (0.0 と 1.0 の間の値は可能です)。