今回は 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のデバッグ方法の調査を進めて行こうと思っています。