Unityでタップとかスワイプとかを簡単に実装できてしまうFingerGestures買った
http://fingergestures.fatalfrog.com/
タイトルの通りAssetStoreでFingerGesturesを買いました。$55です。
Unity iOS/Androidが無償化されてもAssetStoreに課金しています。
そう。まるでソーシャルゲームのように。
上下左右のスワイプイベントを受け取るサンプルを作成したので手順を紹介致します。
HierarchyにFingerGesturesプレハブを配置
FingerGesturesをimportするとAssets/Plugins/FingerGestures/Prefabs以下にFingerGesturesという名前のプレハブがあるのでそれを突っ込みます
スワイプイベントを起こしたいオブジェクトを作成する
適当にオブジェクトを作成します。NGUIばかり使ってる私はSpriteを作成しました。
そのオブジェクトに対して、"Swipe Recognizer"と"Screen Raycaster"というコンポーネントを追加します。
ScreenRaycasterの要素である"Cameras->Size"を1に変更し、"Cameras->Element 0"に対して、Hierarchyに存在する"Camera"オブジェクトをD&Dで持ってきます。
これで後はSwipeを受け取った時の処理を書くだけです。
Swipeイベントを受け取った際の処理を記述する
今回は上下左右のスワイプイベントを処理するため、以下のようなコードを書きました。
SimpleSwipe.cs
上記で作成したオブジェクトに追加します。
"swipeReceiver"は下記の"SwipeReceiverImpl.cs"を追加したオブジェクトを指定します。
今回であれば、作成したオブジェクトです。
using UnityEngine; using System.Collections; public class SimpleSwipe : MonoBehaviour { public GameObject swipeReceiver; void OnSwipe(SwipeGesture gesture) { FingerGestures.SwipeDirection direction = gesture.Direction; switch(direction) { case FingerGestures.SwipeDirection.Right: swipeReceiver.SendMessage("RightSwipe"); break; case FingerGestures.SwipeDirection.Left: swipeReceiver.SendMessage("LeftSwipe"); break; case FingerGestures.SwipeDirection.Up: swipeReceiver.SendMessage("UpSwipe"); break; case FingerGestures.SwipeDirection.Down: swipeReceiver.SendMessage("DownSwipe"); break; default: break; } } }
ISwipeReciever.cs
using UnityEngine; using System.Collections; public class ISwipeReceiver : MonoBehaviour { public virtual void LeftSwipe() {} public virtual void RightSwipe() {} public virtual void UpSwipe() {} public virtual void DownSwipe() {} }
SwipeReceiverImpl.cs
これも上記で作成したオブジェクトに追加します。
using UnityEngine; using System.Collections; public class SwipeReceiverImpl : ISwipeReceiver { public override void LeftSwipe() { print("left swipe"); } public override void RightSwipe() { print("right swipe"); } public override void UpSwipe() { print("up swipe"); } public override void DownSwipe() { print("down swipe"); } }
たったこれだけで単純なスワイプイベントの処理が可能になります。