今回は OVRInput についてまとめた記事になります。
そもそも、OVRInput とは Oculus が提供しているUnity用SDKに含まれている
コントローラ入力情報取得APIで、Unityらしくプラットフォームに依存せず、
複数のコントローラ(Bluetooth ゲームパッド / Xboxコントローラ / Oculus Touch)を
サポートしているようです。
SDKのバージョンは
「Oculus Utilities for Unity 5 (0.1.3.0-beta)」を使用してきます。
なお「0.1.3.0-beta」から
OVRInputControl と OVRGamepadController が非推奨となったようで
今後は OVRInput で PC も モバイルも統一されていくようです。
(0.1.3-betaから触り始めた人には、ふーんで終わりですが、
Oculus Touchも含めInput関連をまとめ直すタイミングなのかなと思ってます)
さっそくですが、BluetoothゲームパッドとOVRInputの対応表を作ってみました
方向上キー | OVRInput.Button.DpadUp |
方向下キー | OVRInput.Button.DpadDown |
方向左キー | OVRInput.Button.DpadLeft |
方向右キー | OVRInput.Button.DpadRight |
左スティック | OVRInput.Axis2D.PrimaryThumbstick |
右スティック | OVRInput.Axis2D.SecondaryThumbstick |
左スティック(押し込み) | OVRInput.Button.PrimaryThumbstick |
右スティック(押し込み) | OVRInput.Button.SecondaryThumbstick |
Aボタン | OVRInput.Button.One |
Bボタン | OVRInput.Button.Two |
Xボタン | OVRInput.Button.Three |
Yボタン | OVRInput.Button.Four |
Lボタン | OVRInput.Button.PrimaryShoulder |
Rボタン | OVRInput.Button.SecondaryShoulder |
左トリガー | OVRInput.Axis1D.PrimaryIndexTrigger |
右トリガー | OVRInput.Axis1D.SecondaryIndexTrigger |
該当なし | OVRInput.Button.Start |
backボタン | OVRInput.Button.Back |
※ゲームパッドは「Gamepad for Nexus Player」を使用
※Xbox360 / One コントローラでもほぼ同様の対応になると思います
どうやら「Gamepad for Nexus Player」には
STARTボタンに該当するボタンは存在しないようです。(まじか、、、)
キー入力状態の取得は、以下のように行います。
■キーの入力状態を取得
bool curBut = OVRInput.Get(OVRInput.Button.One)
■現在のフレームで指定ボタンが押されたかを判定
if (OVRInput.GetDown(OVRInput.Button.One)) { // ボタンが押された場合の処理 }
■現在のフレームで指定ボタンが離されたかを判定
if (OVRInput.GetUp(OVRInput.Button.One)) { // ボタンが離された場合の処理 }
GearVRには「タッチパッド」と「戻るボタン」が標準で付いていますが
入力情報の取得は、Androidの「画面タップ」と「戻るボタン」と同じ方法で
取得が可能です。
■「タッチパッド」のタッチされたか判定
if (Input.GetMouseButtonDown(0)) { // タッチされた場合の処理 }
■「戻るボタン」を押されたか判定
if (Input.GetKeyDown(KeyCode.Escape)) { // 戻るボタンが押された場合の処理 }
※GearVR「タッチパッド」も OVRInputで統一出来るかと思ってましたが、
ここはUnity標準APIによる実装になるようです
※Bluetoothゲームパッドが接続状態で「OVRInput.Button.Back」を取得すると、
ゲームパッドの「backボタン」とGearVRの「戻るボタン」は
同等のボタンとして認識されてました。。。
GearVR + ゲームパッド関連を調べてて
OVRInput なるものの存在に気づき調査しましたが
若干、統一されていないところはありつつも
複数のコントローラを扱えますし使いやすい印象でした。
ひとまず、GearVR + Bluetoothゲームパッドという組み合わせた場合の
Input周りの調査をし終えた感じなので
次回は、GearVRのデバッグ方法の調査を進めて行こうと思っています。