1. 程式人生 > >Unity 手勢識別外掛

Unity 手勢識別外掛

PS:根據需要先看是否禁止多點觸控 API :Input.multyTouchEnabled;
當出現有點選行為但是有不能讓點選下方的UI時
判斷滑鼠或者觸控點在不在UI上

#if IPHONE || ANDROID  
            if (EventSystem.current.IsPointerOverGameObject(Input.GetTouch(0).fingerId))  
#else  
            if (EventSystem.current.IsPointerOverGameObject())  
#endif  

SimpleGesture類


呼叫方式

public void Awake()
{
    SimpleGesture.OnTap(MyMethod);
}
void MyMethod()
{
 Debug.log("方法")
}

* 重點*
SimpleGesture.OnTap();
點選
OnTap
檢測手指何時點選螢幕,而不考慮手指停留在螢幕上的時間。
OnShortTap
檢測手指何時按下螢幕,但第一次觸控和手指釋放之間的時間小於0.5秒。。
OnLongTap
檢測手指何時按下螢幕,但第一次觸控和手指釋放之間的時間大於0.5秒。
OnDoubleTap
檢測手指何時在短時間內(預設半秒鐘)再次按螢幕。
滑動


Swipe
用一根手指畫一條直線後觸發手勢。
Swipe
用一根手指畫一條直線後觸發手勢。
OnSwipe
當手指在螢幕周圍的任何方向上滑動並且在手指被提起之後被觸發。
4個帶方向滑動
在四個方向(向上,向右,向下和向左)檢測滑動的方法。 為了決定滑動的方向,空間分為4個象限,每個象限為90度。
On4AxisSwipeUp
當手指在螢幕向上滑動並在手指擡起之後觸發。
On4AxisSwipeDown
當手指在螢幕向下滑動並在手指擡起之後觸發。
On4AxisSwipeRight
當手指在螢幕向右滑動並在手指擡起之後觸發。
On4AxisSwipeLeft

當手指在螢幕向左滑動並在手指擡起之後觸發。
8個帶方向滑動
在8個方向(向上,向右,向下和向左以及對角線)檢測滑動的方法。 為了決定滑動的方向,空間分為8個象限,每個象限的角度為40º和50º(對角象限度數相等)。
up Down Right Left 40
其他50
On9AxisSwipeUp
當手指在螢幕向上滑動並在手指擡起之後觸發。
On9AxisSwipeDown
當手指在螢幕向下滑動並在手指擡起之後觸發。
On9AxisSwipeRight
當手指在螢幕向右滑動並在手指擡起之後觸發。
On9AxisSwipeLeft
當手指在螢幕向左滑動並在手指擡起之後觸發。
On9AxisSwipeDiagonalRightUp
當手指在螢幕向右上滑動並在手指擡起之後觸發。
On9AxisSwipeDiagonalRightDown
當手指在螢幕右下滑動並在手指擡起之後觸發。
On9AxisSwipeDiagonalLeftUp
當手指在螢幕左上滑動並在手指擡起之後觸發。
On9AxisSwipeDiagonalLeftDown
當手指在螢幕左下滑動並在手指擡起之後觸發。

快速切換
PS: 滑動切換介面用
像其他滑動方式一樣,但是他們並不等待手指擡起。 相反,只要手勢被識別為滑動,則輕觸滑動被觸發。

4個方向
On4AxisFlickSwipeUp
當手指在螢幕向上滑動並一旦有足夠的資訊知道手勢是滑動即被觸發。
On4AxisFlickSwipeDown
當手指在螢幕向下滑動並一旦有足夠的資訊知道手勢是滑動即被觸發。
On4AxisFlickSwipeRight
當手指在螢幕向右滑動並一旦有足夠的資訊知道手勢是滑動即被觸發。
On4AxisFlickSwipeLeft
當手指在螢幕向左滑動並一旦有足夠的資訊知道手勢是滑動即被觸發。

8個方向
On9AxisFlickSwipeUp
當手指在螢幕向上滑動並一旦有足夠的資訊知道手勢是滑動即被觸發。
On9AxisFlickSwipeDown
當手指在螢幕向下滑動並一旦有足夠的資訊知道手勢是滑動即被觸發。
On9AxisFlickSwipeRight
當手指在螢幕向右滑動並一旦有足夠的資訊知道手勢是滑動即被觸發。
On9AxisFlickSwipeLeft
當手指在螢幕向左滑動並一旦有足夠的資訊知道手勢是滑動即被觸發。
On9AxisFlickSwipeRightUp
當手指在螢幕向右上滑動並一旦有足夠的資訊知道手勢是滑動即被觸發。
On9AxisFlickSwipeRightDown
當手指在螢幕右下滑動並在一旦有足夠的資訊知道手勢是滑動即被觸發。
On9AxisFlickSwipeLeftUp
當手指在螢幕左上滑動並在一旦有足夠的資訊知道手勢是滑動即被觸發。
On9AxisFlickSwipeLeftDown
當手指在螢幕左下滑動並在一旦有足夠的資訊知道手勢是滑動即被觸發。

形狀手勢
當SimpleGesture檢測到用手指繪製的特定形狀時,觸發手勢。

OnCircle
檢測手指在觸控式螢幕上繪製圓形時。
OnZigZag
檢測手指在觸控式螢幕上繪製至少3個邊緣的曲折

連續手勢
只要手指正在移動,連續手勢會持續觸發。
例如,平移是一個連續的手勢,因為它是在手指移動時被觸發的

While1FingerPanning
當1手指平移檢測到手指在螢幕周圍移動時。
WhilePanning
檢測到2個或更多個手指在螢幕周圍一起移動時。
WhilePinching
檢測到2個手指捏住螢幕(縮小)時。
WhileStretching
檢測到2個手指伸展螢幕(放大)時。
WhileTwisting
當扭轉檢測到2個手指繞樞軸旋轉時。

獲取更加詳細的資訊
有關此手勢的更多資訊,只需在自定義函式中新增GestureInfoXX(根據行為新增不同)引數型別,

public class GestureInfoTap {
    public Vector2 position;
    public float duration;
}
public void Awake() {
    SimpleGesture.OnTap(MyTapCallback);
}

public void MyTapCallback(GestureInfoTap gesture) {
    Debug.Log("Tap!");
    Debug.Log("Position:" + gesture.position);
    Debug.Log("Duration:" + gesture.duration);
}