Unity手势插件FingerGestures
生活随笔
收集整理的這篇文章主要介紹了
Unity手势插件FingerGestures
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
點(diǎn)擊下載FingerGestures手勢插件
1、拖入Finger Gestures Initializer預(yù)制資源,在任意對象上添加以下腳本即可使用,注意:相機(jī)Camera的tag是MainCamera。
using UnityEngine; using System.Collections;public class FingerEvent : MonoBehaviour {void OnEnable(){//啟動(dòng)時(shí)調(diào)用,這里開始注冊手勢操作的事件。//按下事件: OnFingerDown就是按下事件監(jiān)聽的方法,這個(gè)名子可以由你來自定義。方法只能在本類中監(jiān)聽。下面所有的事件都一樣!!!FingerGestures.OnFingerDown += OnFingerDown;//抬起事件FingerGestures.OnFingerUp += OnFingerUp;//開始拖動(dòng)事件FingerGestures.OnFingerDragBegin += OnFingerDragBegin;//拖動(dòng)中事件...FingerGestures.OnFingerDragMove += OnFingerDragMove;//拖動(dòng)結(jié)束事件FingerGestures.OnFingerDragEnd += OnFingerDragEnd; //上、下、左、右、四個(gè)方向的手勢滑動(dòng)FingerGestures.OnFingerSwipe += OnFingerSwipe;//連擊事件 連續(xù)點(diǎn)擊事件FingerGestures.OnFingerTap += OnFingerTap;//按下事件后調(diào)用一下三個(gè)方法FingerGestures.OnFingerStationaryBegin += OnFingerStationaryBegin;FingerGestures.OnFingerStationary += OnFingerStationary;FingerGestures.OnFingerStationaryEnd += OnFingerStationaryEnd;//長按事件FingerGestures.OnFingerLongPress += OnFingerLongPress;}void OnDisable(){//關(guān)閉時(shí)調(diào)用,這里銷毀手勢操作的事件//和上面一樣FingerGestures.OnFingerDown -= OnFingerDown;FingerGestures.OnFingerUp -= OnFingerUp;FingerGestures.OnFingerDragBegin -= OnFingerDragBegin;FingerGestures.OnFingerDragMove -= OnFingerDragMove;FingerGestures.OnFingerDragEnd -= OnFingerDragEnd; FingerGestures.OnFingerSwipe -= OnFingerSwipe;FingerGestures.OnFingerTap -= OnFingerTap;FingerGestures.OnFingerStationaryBegin -= OnFingerStationaryBegin;FingerGestures.OnFingerStationary -= OnFingerStationary;FingerGestures.OnFingerStationaryEnd -= OnFingerStationaryEnd;FingerGestures.OnFingerLongPress -= OnFingerLongPress;}//按下時(shí)調(diào)用void OnFingerDown( int fingerIndex, Vector2 fingerPos ){//int fingerIndex 是手指的ID 第一按下的手指就是 0 第二個(gè)按下的手指就是1。。。一次類推。//Vector2 fingerPos 手指按下屏幕中的2D坐標(biāo)//將2D坐標(biāo)轉(zhuǎn)換成3D坐標(biāo)transform.position = GetWorldPos( fingerPos );Debug.Log(" OnFingerDown =" +fingerPos); }//抬起時(shí)調(diào)用void OnFingerUp( int fingerIndex, Vector2 fingerPos, float timeHeldDown ){Debug.Log(" OnFingerUp =" +fingerPos); }//開始滑動(dòng)void OnFingerDragBegin( int fingerIndex, Vector2 fingerPos, Vector2 startPos ){Debug.Log("OnFingerDragBegin fingerIndex =" + fingerIndex + " fingerPos ="+fingerPos +"startPos =" +startPos); }//滑動(dòng)結(jié)束void OnFingerDragEnd( int fingerIndex, Vector2 fingerPos ){Debug.Log("OnFingerDragEnd fingerIndex =" + fingerIndex + " fingerPos ="+fingerPos); }//滑動(dòng)中void OnFingerDragMove( int fingerIndex, Vector2 fingerPos, Vector2 delta ){transform.position = GetWorldPos( fingerPos );Debug.Log(" OnFingerDragMove =" +fingerPos); }//上下左右四方方向滑動(dòng)手勢操作void OnFingerSwipe( int fingerIndex, Vector2 startPos, FingerGestures.SwipeDirection direction, float velocity ){//結(jié)果是 Up Down Left Right 四個(gè)方向Debug.Log("OnFingerSwipe " + direction + " with finger " + fingerIndex);}//連續(xù)按下事件, tapCount就是當(dāng)前連續(xù)按下幾次void OnFingerTap( int fingerIndex, Vector2 fingerPos, int tapCount ){Debug.Log("OnFingerTap " + tapCount + " times with finger " + fingerIndex);}//按下事件開始后調(diào)用,包括 開始 結(jié)束 持續(xù)中狀態(tài)只到下次事件開始!void OnFingerStationaryBegin( int fingerIndex, Vector2 fingerPos ){Debug.Log("OnFingerStationaryBegin " + fingerPos + " times with finger " + fingerIndex);}void OnFingerStationary( int fingerIndex, Vector2 fingerPos, float elapsedTime ){Debug.Log("OnFingerStationary " + fingerPos + " times with finger " + fingerIndex);}void OnFingerStationaryEnd( int fingerIndex, Vector2 fingerPos, float elapsedTime ){Debug.Log("OnFingerStationaryEnd " + fingerPos + " times with finger " + fingerIndex);}//長按事件void OnFingerLongPress( int fingerIndex, Vector2 fingerPos ){Debug.Log("OnFingerLongPress " + fingerPos );}//把Unity屏幕坐標(biāo)換算成3D坐標(biāo)Vector3 GetWorldPos( Vector2 screenPos ){Camera mainCamera = Camera.main;return mainCamera.ScreenToWorldPoint( new Vector3( screenPos.x, screenPos.y, Mathf.Abs( transform.position.z - mainCamera.transform.position.z ) ) ); } }/*FingerGestures最大的好處就是結(jié)合unity3d進(jìn)行多點(diǎn)觸控,手勢識(shí)別,編寫一次代碼 ,通過配置來進(jìn)行多平臺(tái)發(fā)布 FingerGestures提供了3種不同的方法來檢測由用戶執(zhí)行的拖動(dòng)手勢。方法1:使用默認(rèn)的手勢事件 每個(gè)手指的手勢事件:為每個(gè)單獨(dú)的手指,獨(dú)立的狀態(tài) OnFingerTap 輕敲 OnFingerDoubleTap OnFingerSwipe 猛擊 OnFingerLongPress 長按 OnFingerDragBegin,OnFingerDragMove,OnFingerDragEnd 拖曳全局手勢事件:當(dāng)一個(gè)手指觸摸屏幕上:OnTAPOnDoubleTapOnSwipeOnLongPressOnDragBegin,OnDragMove,OnDragEnd兩個(gè)手指觸摸屏幕時(shí):OnPinchBegin,OnPinchMove,OnPinchEnd 捏,夾OnRotationBegin,OnRotationMove,OnRotationEnd 旋轉(zhuǎn)OnTwoFingerTapOnTwoFingerSwipeOnTwoFingerLongPressOnTwoFingerDragBegin,OnTwoFingerDragMove,OnTwoFingerDragEnd方法2:使用一個(gè)DragGestureRecognizer 一種識(shí)別器方法3:使用“工具箱”:工具箱是一種更高級方便的方式,設(shè)計(jì)的理念是開箱就用,包括了很多腳本,但是沒有涉及到核心源碼, 所以不用的話 可以把這個(gè)包直接刪掉,FingerGestures 的事件注冊是基于c#的,性能還是可以。*/總結(jié)
以上是生活随笔為你收集整理的Unity手势插件FingerGestures的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 搭建 WordPress 博客教程(超详
- 下一篇: Learning salient bou