Fingers Lite - Touch Gestures for Unity をとりあえず使えるようにする。
Fingers - Touch Gestures for Unity
のアセットが良さそうだったが、チュートリアルドキュメントが見つからなかったのでメモを書いた。
そもそもの話として、タッチ機能の実装などは車輪の再開発になるのか?
という疑問はあるが、こちらのフル機能のFingersは画像と形状の認識があるので
今後、ジェスチャーで必殺技!みたいなことをしたい時に使いたい。
(形状認識はさすがに面倒だね)
買う前に Liteを使う
さて、最初に$20を出して購入するのはとても良い事だが
私の頭がこのassetを使えないかもしれない。Lite版があるのでそちらをimportして試してみよう。
Fingers Lite - Free Finger Touch Gestures for Unity
動画チュートリアルは以下だ。古いが基本的な部分はさほど変わらないはずだ。
Fingers Gestures for Unity - Complete Tutorial
デモスクリプトを確認
動画を見たあとはデモスクリプトを確認しよう
重要なのは以下の4点ほどだ。
(混乱が少ないように随時書き換えてあるので、実際のコードを確認してくれるとうれしい :) )
一番最初に実行されるコード
private TapGestureRecognizer tapGesture;
...
private void Start()
{
...
CreateTapGesture();
...
FingersScript.Instance.CaptureGestureHandler = CaptureGestureHandler;
}
ジェスチャーの作成
private void CreateTapGesture()
{
tapGesture = new TapGestureRecognizer();
// デリゲートにcallbackを委譲
tapGesture.StateUpdated += TapGestureCallback;
// シングルタップのみを判定させるため、ダブルタップだった場合、
// シングルタップを無視させる
tapGesture.RequireGestureRecognizerToFail = doubleTapGesture;
// ジェスチャーを登録
FingersScript.Instance.AddGesture(tapGesture);
}
実際のシングルタップの動作
private void TapGestureCallback(GestureRecognizer gesture)
{
// ジェスチャーが認識されているか
if (gesture.State == GestureRecognizerState.Ended)
{
Debug.Log("Tapped at " + gesture.FocusX + "," + gesture.FocusY);
}
}
ジェスチャが有効かの判定
private static bool? CaptureGestureHandler(GameObject obj)
{
if (obj.name.StartsWith("PassThrough"))
return false;
if (obj.name.StartsWith("NoPass"))
return true;
return null;
}
bool?
はnull許容値型だ。
以上の4点を書いたコードをGameObjectにアタッチすれば
タップした時の動作が確認できるはずだ。
私にしては短いが、メモ程度なのでこんなものだろう。