はじめに

GoogleVR SDKはGesture C APIがあり以下の操作を検出できます。

  • タッチパッドについて
    • スワイプ方向
    • 移動量
    • 速度
  • 各ボタンの長押し

ですがAndroid Java/Unity/UE4のSDKに同様のAPIが用意されていないのでUnityからネイティブコード呼び出ししてみます。

コード

ジェスチャーAPI呼び出し用

https://gist.github.com/shiena/612d9c7b66fab2f8535af14438a6208e

ジェスチャー検知

using UnityEngine;  

public class Gesture  
{  
    [SerializedField] private GestureDetector gestureDetector;  
    void Update()  
    {  
        var device = GvrController.GetDevice(GvrControllerInputHand.Dominant);  
        if (device == null)  
        {  
            return;  
        }  
        var gvrGestureTypes = gestureDetector.GetGesture(Device);  
        Debug.Log($"[{name}]GestureType: {gvrGestureTypes.Count}");  
        foreach (var gvrGestureType in gvrGestureTypes)  
        {  
                Debug.Log($"[{name}]{gvrGestureType}");  
        }  
    }  
}  

ですが、gvr_gesture_update に必要な GvrControllerInputDevice.StatePtrIntPtr.Zero しか返さないのでこのままでは実行できません。
更にネイティブコード側で取得すればいけそうなのですがちょっと面倒ですね…

追記

もうちょっと調べたらできました。

https://gist.github.com/shiena/d2cbd2bd100cc9ed7db4b4dfd608feca