JackMasaki’s blog

掲載した記事ネタや作ったアプリ、参加したイベントレポートなどを掲載します

Oculus Questでのコントローラの入力取得

Oculus Questが発売しましたね。

ということでUnityでOculus Questのコントローラのボタンなどの入力を取得する方法の覚え書きです。

ビルドやコントローラの表示メモについてはこちら

jackmasaki.hatenablog.com

Oculus Questの開発をUnityで行うにあたりOculus Integrationを使用します。

assetstore.unity.com

ボタンの取得

基本的にOculus Touchと同じなので、公式ドキュメントを参考にします。

developer.oculus.com

下記のようなコードで各ボタンの入力を取得できます。

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型で返ってきます。

このほかにも取れる値があるので詳しくは公式ドキュメントを参考にしてください。

developer.oculus.com

追記

コントローラのボタンとアナログスティックを取得できる(はず)のQuest向けビルド済みのapkを置いておきます。

drive.google.com

MoguraVRさんで公開しているapkを試していただいたそうです。

www.moguravr.com