2015年2月16日月曜日

【Unity】スワイプ、フリック操作を検出してみる。

こんばんは、naichilabです。
久々にUnityネタ。

スワイプ&フリックしたい

ちょっとしたミニゲームを作ろうとするとスワイプやフリックを使いたくなりますよね。
でもUnity標準では用意されてないみたい。
アセットストアを探しても有料しかなさそうなので作ってみました。

使い方

https://github.com/naichilab/Unity-TouchManager
ここのDownload ZIPからソースをダウンロード。
解凍すると「TouchManager.unitypackage」が入っているのでUnityプロジェクトにインポートしてください。

Prefabs/TouchManagerをシーンに置いたら準備完了。

フリックを受け取りたいスクリプトで下記コードを追加してください。
  void OnEnable ()
  {
    //イベントリスナをセット
    TouchManager.Instance.Swipe += OnSwipe;
    TouchManager.Instance.TouchStart += OnTouchStart;
    TouchManager.Instance.TouchEnd += OnTouchEnd;
    TouchManager.Instance.Flick += OnFlick;
  }

  void OnDisable ()
  {
    //イベントリスナを解除
    TouchManager.Instance.Swipe -= OnSwipe;
    TouchManager.Instance.TouchStart -= OnTouchStart;
    TouchManager.Instance.TouchEnd -= OnTouchEnd;
    TouchManager.Instance.Flick -= OnFlick;
  }

  void OnTouchStart (object sender, TouchEventArgs e)
  {
    //タッチ開始時に呼び出されます。
  }

  void OnTouchEnd (object sender, TouchEventArgs e)
  {
    //タッチ終了時に呼び出されます。
  }

  void OnSwipe (object sender, SwipeEventArgs e)
  {
    //スワイプ中に呼び出されます。
  }

  void OnFlick (object sender, FlickEventArgs e)
  {
    //フリック検出時に呼び出されます。
  }
引数としてタッチ場所やフリック量が渡されるので好きに加工して使ってください。

デモ


Hosted by UnityRoom.com

まとめ

ソースコードはものすごい微妙な感じ…。
Android,iOS,WebPlayer全てで動作するのは確認できていますが
値がPixel数で出てくるっぽいので端末サイズが違うと
フリック感覚にばらつきがありそうです。

端末サイズの違いを吸収する方法ご存知の方は是非教えてください。 

綺麗にまとまったらAssetStoreに申請してみたいなー。

スポンサーリンク

Related Posts Plugin for WordPress, Blogger...