【Unity】【Oculus】HMDを外したらポーズ状態にする

Oqulus Questでビートセイバーやっていたら、腕が筋肉痛になりました。
できれば上腕二頭筋ではなく、上腕三頭筋に効いてほしい。

開発環境

  • Unity 2019.1.2f1
  • Oculus Integration 1.39
  • Oculus Quest

HMDを外すとポーズになるゲームがある

ビートセイバー等のゲームは、HMDを外すとポーズ状態になりますよね。
その後15秒ほどすると、Oculus本体がスリープになります。
スリープはOculus自体の設定ですが、ゲームのポーズはゲーム側で設定するようです。

HMDの装着状態を取得する

Oculus IntegrationにはOVRManagerというクラスが用意されています。
こちらのisUserPresentというプロパティから、HMDの装着状態を取得することができます。

developer.oculus.com

↑相変わらず素っ気ない埋め込みリンクですがw
OVRManagerのリファレンスです。英語です。しんどいです。

 

private bool isPose = true; // ポーズ状態
void Update()
{
    if (!OVRManager.instance.isUserPresent) {
        if (!isPose) {
            // ポーズ処理を実装
            isPose = true;
        }
    } else {
        if (isPose) {
            // ポーズ解除処理を実装
            isPose = false;
        }
    }
}

こんな感じのコードを書いてやればOKです。

結論

  1. HMDを外した時にゲームをポーズ状態にするのは、スクリプトで実装する必要がある
  2. OVRManagerには、HMDの装着状態を取得できるプロパティが用意されている

なお、現在のOculus Integrationの最新Verは1.40の模様です。
アップデートしたいけど、なんか動かなくなりそうで怖くてできない(><)

 

 

 

↑↑↑ ぜひ遊んでみてください!↑↑↑