Unity
Oculus
VR
OculusGo

Oculus Goのコントローラ入力の取得まとめ

Oculus Goを買ってUnityデビューをしました。
色々とチュートリアルをやって、それをOculus Goに対応させて遊んでるのですが、一番手間取るのはコントローラのアクションの取得です。
ここらへんはOculus Goでアプリで作る際は欠かせないと思いますので、備忘録的にまとめていこうと思います。

Prefabを使ってコントローラーを表示する必要があるのですが、その方法は以下の記事を見て頂ければと思います。
Oculus Goのコントローラーを表示させる

追記

2018/7/18 バックボタンの取得方法の修正とホームボタン長押しを追加しました。

コントローラ入力の取得

バックボタン

Input.GetKeyDown(KeyCode.Escape)
// or
OVRInput.Get(OVRInput.RawButton.Back)

ホームボタン長押し

OVRInput.GetControllerWasRecentered()

トリガー

// トリガー押した時
OVRInput.GetDown(OVRInput.Button.PrimaryIndexTrigger)

// トリガー離した時
OVRInput.GetUp(OVRInput.Button.PrimaryIndexTrigger)),

どちらの手で持っているか

var activeController = OVRInput.GetActiveController();
if (activeController == OVRInput.Controller.LTrackedRemote)
{
    // 左
}
else if (activeController == OVRInput.Controller.RTrackedRemote)
{
    // 右
}

タッチパッド

クリック

OVRInput.Get(OVRInput.Button.PrimaryTouchpad)

スクロールの取得

// Up方向
OVRInput.Get(OVRInput.Button.Up)

// Down方向
OVRInput.Get(OVRInput.Button.Down)

// Left方向
OVRInput.Get(OVRInput.Button.Left)

// Right方向
OVRInput.Get(OVRInput.Button.Right)

位置の取得

Vector2 touchPadPt = OVRInput.Get(OVRInput.Axis2D.PrimaryTouchpad);

if (touchPadPt.x > 0.5 && -0.5 < touchPadPt.y && touchPadPt.y< 0.5) 
{
    //右方向
}
if (touchPadPt.x< -0.5 && -0.5 < touchPadPt.y && touchPadPt.y< 0.5) 
{
    //左方向
}
if (touchPadPt.y > 0.5 && -0.5 < touchPadPt.x && touchPadPt.x< 0.5) 
{
    //上方向
}
if (touchPadPt.y< -0.5 && -0.5 < touchPadPt.x && touchPadPt.x< 0.5) 
{
    //下方向
}

ここで紹介した方法で位置を取得して移動が出来るようにしました。
Oculus Goで大自然をかけまわってみる

まとめ

今はここまでですが、情報はこれから追記していきます。
Oculusのコントローラのサンプルアプリを動かしながら色々と試してるのですが、思ったより多くの入力が取れることにびっくりしています。

上手く使えれば面白いことができそうです。
とりあえずOculus Goはすごい。

参考情報

http://bibinbaleo.hatenablog.com/entry/2018/05/14/171744

追記

何か間違い等ございましたら、ご指摘お願いします。