UnityでDaydreamコントローラーのGesture C APIを使う


はじめに

DaydreamはGesture C APIがありタッチパッドについて以下のような機能を使えます。

このAPIはAndroid NDKのみに提供されていているのでUnityから扱えるようにしました。


  • スワイプ判定 (開始、スワイプ中、終了、スワイプ)

  • スワイプ方向の判定(上下左右)

  • スワイプ速度(X軸とY軸)

  • スワイプ移動量(X軸とY軸)

  • 長押し判定


使い方

ソース

https://gist.github.com/shiena/d2cbd2bd100cc9ed7db4b4dfd608feca から2つのソースをコピーしてUnityプロジェクトに入れます。

使い方

using UnityEngine;

public class GestureTest
{
[SerializeField] private GvrGesture gvrGesture;

void Update()
{
var gestures = gvrGesture.GetGesture();
if (gestures.Count > 0)
{
foreach (var g in gestures)
{
Debug.Log($"{g.GestureType}, {g.GestureDirection}, {g.Displacement.x}, {g.Displacement.y}, {g.Velocity.x}, {g.Velocity.y}");
}
}

if (gvrGesture.LongPressed())
{
Debug.Log("Long pressed");
}
}
}

機能
メソッド

スワイプ判定
GvrGesture::GetGesture()

長押し判定
GvrGesture::LongPressed()

このAPIがなくてもUnityで同じ事を実現できるのですがあったらあったで便利です。

せっかくなのでUnity Package Managerに対応しようとしたのですが依存先にGoogle VR SDK for Unityを指定できないので断念しました。残念。


リンク