1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Fingers Lite - Touch Gestures for Unity をとりあえず使えるようにする。

Posted at

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にアタッチすれば
タップした時の動作が確認できるはずだ。

私にしては短いが、メモ程度なのでこんなものだろう。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?