Edited at

Oculusをつけている時と外している時の判定をジャイロで判断させてみる

More than 5 years have passed since last update.

Oculusをつけている時と外している時の判定をとりたいと思うんだけども

デバイスくっつけないで何か判定できないかな?っと思った時にジャイロで判断させようと思います。

ただ、Oculusをそこら辺に置いておいても微妙にジャイロが判定されてしまうので

回転値(0,0,0)で考えると失敗してしまいます。

そこで、Quaternion.Angleを使って角度が0.1よりも動いたのか、それとも動いてないのかでOculusをユーザーがつけているのかどうかを判定する事にしました。

判定するカメラは、OVRCameraControllerの子にあるレフトカメラを使いました。

スクリーンショット 2014-10-09 13.25.50.png

※サンプルとしては、適当にカウントアップさせて値を超えたら別シーンへ移動としています。

using UnityEngine;

using System.Collections;

public class OculusGyroStatus : MonoBehaviour {
//セッティング
private Transform CameraLeft_;
//角度
private Quaternion prevRotation;
//動いてるのか、止まっているのかを判断する為のカウント
private float count = 0;
//スタート時間からの差分をはかる為のフラグ
private bool flg = false;

void Start () {
//OVRCameraControllerの子にあるレフトカメラを参照にする
CameraLeft_ = transform.FindChild ("CameraLeft");
}

void Update () {
//現在のレフトカメラと保存している回転角度を測定して何度なのか調べる
float angle = Quaternion.Angle(CameraLeft_.rotation, prevRotation);

if (angle < 0.1f)
{
if (flg == false)
{
count++;
if (count >= 1000)
{
NextScene();
}
}

} else
{
count = 0;
}
//カメラの回転を保存する
prevRotation = CameraLeft_.rotation;
}

void NextScene(){
flg = true;
Application. LoadLevel("nextscene");
}
}

これも、ソース自体はかなり簡単ですね。