OVRInput (GearVR + Unity) のまとめ

今回は 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 対応表
方向上キー 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タッチパッド入力取得方法

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