Oculus Questでのコントローラの入力取得
Oculus Questが発売しましたね。
ということでUnityでOculus Questのコントローラのボタンなどの入力を取得する方法の覚え書きです。
ビルドやコントローラの表示メモについてはこちら
Oculus Questの開発をUnityで行うにあたりOculus Integrationを使用します。
ボタンの取得
基本的にOculus Touchと同じなので、公式ドキュメントを参考にします。
下記のようなコードで各ボタンの入力を取得できます。
if (OVRInput.GetDown(OVRInput.RawButton.A)) { //Aボタンを押した際の処理 } if (OVRInput.GetDown(OVRInput.RawButton.B)) { //Bボタンを押した際の処理 } if(OVRInput.GetDown(OVRInput.RawButton.X)) { //Xボタンを押した際の処理 } if (OVRInput.GetDown(OVRInput.RawButton.Y)) { //Yボタンを押した際の処理 } if (OVRInput.GetDown(OVRInput.RawButton.RIndexTrigger)) { //右人差し指トリガーを押した際の処理 } if (OVRInput.GetDown(OVRInput.RawButton.RHandTrigger)) { //右中指トリガーを押した際の処理 } if (OVRInput.GetDown(OVRInput.RawButton.LIndexTrigger)) { //左人差し指トリガーを押した際の処理 } if (OVRInput.GetDown(OVRInput.RawButton.LHandTrigger)) { //左中指トリガーを押した際の処理 }
中指のトリガーを除く各ボタンにはタッチセンサーがあります。ボタンを押し込まなくても触ったかどうかを判定できます。 次のようなコードで取得できます。
if (OVRInput.Get(OVRInput.RawTouch.A)) { //Aボタンをタッチした際の処理 } if (OVRInput.Get(OVRInput.RawTouch.B)) { //Bボタンをタッチした際の処理 } if (OVRInput.Get(OVRInput.RawTouch.X)) { //Xボタンをタッチした際の処理 } if (OVRInput.Get(OVRInput.RawTouch.Y)) { //Yボタンをタッチした際の処理 }
アナログスティックの値取得
アナログスティックの値は次のようなコードで取得できます。
//左スティック OVRInput.Get(OVRInput.RawAxis2D.LThumbstick) //右スティック OVRInput.Get(OVRInput.RawAxis2D.RThumbstick)
それぞれVectoer2型で返ってきます。
このほかにも取れる値があるので詳しくは公式ドキュメントを参考にしてください。
追記
コントローラのボタンとアナログスティックを取得できる(はず)のQuest向けビルド済みのapkを置いておきます。
MoguraVRさんで公開しているapkを試していただいたそうです。