概要
さて、今回は前回書いた「FirstVRでHello World」に続き、FirstVRでジェスチャを使って見たのでそのメモです。
実際に動かしたデモ動画はこちら↓
FirstVR使って重力系魔法使い感を出してみるw pic.twitter.com/xVq574C7dS
— edom18@VR (@edo_m18) November 25, 2018
重力系の魔法使い感を出してみましたw
ジェスチャを司るFVRGestureManager
FVRlib
にはFVRGestureManager
という、ジェスチャを管理するクラスがあります。
このクラスにはジェスチャに関するイベント処理や状態確認ができるプロパティがあるので、今回はこれを利用して冒頭の動画のような処理を作ってみました。
なお、今回のジェスチャはこちらの開発者サイトにアップされている動画(FirstVR SDK Tutorial 4: Gestures)を参考にしました。
また、FVRGestureManager
のドキュメントはこちらです→ FVRlib.FVRGestureManager クラス
イベントハンドラを設定する
FVRGestureManager
クラスにはOnSwipeUp
などの、スワイプを検知した際のGestureEventHandler
型のデリゲートが設定されています。
今回のデモはこれにハンドラを登録して処理を行っています。
_fvr.gestureManager.OnSwipeUp += GravityOff;
_fvr.gestureManager.OnSwipeDown += GravityOn;
こんな感じで、スワイプアップを検知したら重力オフ、スワイプダウンを検知したら重力オン、みたいな感じにしてます。
ただ、動画では成功したところだけを載せていますが、若干検知が遅れたりすることがあったので、これを利用したシビアなゲームはあまり適さないかもしれません。
ちょっとした演出に使う程度ならありかも?
なお、この他にも以下のイベントが購読できるようになっています。
public event GestureEventHandler OnSwipeLeft;
public event GestureEventHandler OnSwipeRight;
public event GestureEventHandler OnSwipeDown;
public event GestureEventHandler OnSwipe;
public event GestureEventHandler OnShake;
public event GestureEventHandler OnFVRTap;
public event GestureEventHandler OnMSVarPeak;
public event GestureEventHandler OnSwipeUp;
また、イベント以外にもジェスチャオブジェクトの状態をチェックして処理を行う(Input.GetKey
的なやつ)こともできます。
public FVRGesture swipeD;
public FVRGesture swipeU;
public FVRGesture swipeR;
public FVRGesture swipeL;
public FVRGesture fvrTap;
これを利用する場合は以下のようにして、Update
メソッド内で評価することができます。
if (_fvr.gestureManager.swipeD.triggered)
{
// do anything.
}
FirstVRのSDKには、デバイスから取得できるデータをビジュアライズしてくれるサンプルシーンがあるのでそれを使って、どんな値がどれくらい取れるかをチェックしてみると分かりやすいと思います。