EasyTouch手势识别

EasyTouch 单指或多指手势识别

在场景目录列表中 添加EasyTouch物体

Enable EasyTouch:EasyTouch触屏功能开启或关闭

Enable Unity Remote:远程unity ? 开启多指触屏模式 (最终打包时,关闭此选项)

GUI兼容

EasyTouch 单指或多指手势动作识别

Enable Uniyt UI detection

开启或关闭Unity UI元素触屏识别

Unity UI compatibility

Enable : 如果开启,则手指在接触UI元素时不触发EasyTouch的相关手势事件

Disable : 触发EasyTouch的相关手势事件,并在gesture参数中设置Gesture.isOverUIElement为true.

Enable : 每帧更新UI组件

NGUI相关忽略

可交互元素

EasyTouch 单指或多指手势动作识别

Enable auto-select:3d物体时能被触摸识别

pickable layers 3D:能够被触摸识别的3d物体层级

Auto update picked gameobject:每帧更新当前触摸的游戏物体对象

Enable 2D collider:开启2d物体碰撞器识别

pickable 2D layers:能够被触摸识别的2d物体层级

手势参数设置

EasyTouch 单指或多指手势动作识别

Priority to:优先处理点击或滑动的手势

Tap : 手指移动的间距小于 Stationary tolerance 值, 被识别为点击操作

Slips : 手指移动的间距大于 Stationary tolerance 值, 被识别为滑动操作

Stationary tolerance:手指移动间距 (像素)

Long tap time:长按多久才出发点击

Double tap time:双击最大间隔时间

Swipe tolerance:手势方向角度误差

双指手势属性

2 Fingers gesture

开启双指手势识别

Pick method:选中物体的方式

Finger : 双指必须同时触摸同一个物体

Average : 双指的中心位置在物体上就可以选中物体

Enable swipe & drag:能够识别滑动或拖动手势

Enable Pinch:识别向内挤压动作

Min pinch length:识别挤压动作的最小移动间距

Enable twist:能识别选择动作

Min twist angle:最小能够识别旋转角度

单个手指操作

1: 单指触摸屏幕

被触摸的物体脚本中添加以下事件

Using HedgehogTeam.EasyTouch; //引用Easytouch明名空间
EasyTouch.On_TouchStart += MyTouchStart; // 开始触摸瞬间
void MyTouchStart (Gesture gesture){ … } //注册触摸事件的自定义方法, 参数是Gesture

EasyTouch.On_TouchDown +=MyTouchDown  //触摸状态              
void MyTouchDown(Gesture gesture)

EasyTouch.On_TouchUp+=MyTouchUp //停止触摸                            
void MyTouchUp(Gesture gesture)

判断当前是否触摸脚本所在的游戏物体

If(gesture.PickGameObject=this.gameObject) 

2: 单指点击屏幕

EasyTouch.On_SimpleTap += MySimpleTap      

void MySimpleTap(Gesture gesture) 

3: 单指长按屏幕 长按激活, 会有Start 到 End 的过程 而触摸是 Start Down Up 的过程

EasyTouch.On_LongTapStart += MyLongTapStart //开始点击瞬间  
EasyTouch.On_LongTap +=MyLongTap  //长按中
EasyTouch.On_LongTapEnd+=MyLongTapEnd //停止点击

4:单指双击屏幕

EasyTouch.On_DoubleTap+= MyDoubleTap     
void MyDoubleTap(Gesture gesture){...}

双指操作

双指触摸

双指触摸和单指触摸事件名称后缀加2fingers 就可以了

EasyTouch.On_TouchStart2Fingers +=MyTouchStart2Fingers  //双指触摸瞬间 
void MyTouchStart2Fingers(Gesture gesture) {}

EasyTouch.On_TouchDown2Fingers +=MyTouchDown2Fingers    //双指触摸时      
EasyTouch.On_TouchUp2Fingers+=MyTouchUp2Fingers         // 双指离开屏幕时

EasyTouch.On_Cancle2Fingers+=MyCancle2Fingers     		//  取消双指触摸(只要有一只手指离开便生效)  

注意双指需要都触摸当前游戏物体才可以出发该事件

双指点击

单指点击事件名加2fingers后缀 、

EasyTouch.OnSimpleTap2Fingers  += MySimpleTap2Fingers 

双指长按

EasyTouch.On_LongTapStart2Finger += MyLongTapStart2Fingers  //双指触碰瞬间
EasyTouch.On_LongTap2Finger+=   	//双指触摸时
EasyTouch.On_LongTapEnd2Finger +=
EasyTouch.On_Cancle2Fingers +=     //取消双指触摸(只要有一只手指离开便生效)  

双指双击

EasyTouch.On_DoubleTap2Finger += MyDoubleTap

双指拖动

EasyTouch.OnDragStart2Fingers
EasyTouch.OnDrag2Fingers
EasyTouch.OnDragEnd2Fingers

双指捏,压紧

EasyTouch.OnTouchStart2Fingers
EasyTouch.OnPinchIn   //双指向内挤压
EasyTouch.OnPinchOut       //双指相反方向移动
EasyTouch.OnPinchEnd       //结束捏的动作

在OnTouchStart2Finger 监听事件函数中

开启pinch扭转模式

EasyTouch.SetEnablePinch(true);

关闭pinch扭转模式

EasyTOuch.SetEnableTwist(false);

在On_PinchIn监听函数中

获得每秒中 双指的缩放值

float zoom = gesture.deltaPinch *time.deltaTime;    //注意gesture.deltaTime 恒大于0

对当前物体缩放

Vector3 scale=transform.localScale
Transform.localScale=new Vector3(scale.x-zoom,scale.y-zoom,scale.z-zoom);

在On_PinchOut 监听函数中

Transform.localScale=new Vector3(scale.x+zoom,scale.y+zoom,scale.z+zoom);  //加上缩放系统

在On_PinchEnd监听方法中

开启扭转模式

EasyTouch.SetEnableTwist(true);

双指旋转

EasyTouch.OnTouchStart2Fingers
EasyTouch.OnTwist += MyTwist //开始扭转
EasyTouch.OnTwistEnd  //扭转结束
EasyTouch.OnCancle2Finger  //双指离开屏幕

在OnTouchStart2Fingers 中 开启扭转模式,关闭旋转模式

在OnTwist的监听函数中

Void MyTwist(Gesture gesture)
{
    If(gesture.pickGameObject=this.gameObject)
	{
	      transform.rotate(new vector3(0,0,gesture.twistAngle));
	      //gesture.twistAngle  扭转角度
	}
}

通用操作

通用是指单个手指或多个手指都能触发的事件 有拖拽动作, 手指划过姿势动作(一个方向划过)

拖拽操作

EasyTouch.On_DragStart+= MyDragStart //开始滑动瞬间  void MyDragStart(Gesture gesture)
EasyTouch.On_Drag +=MyDrag  //滑动中
EasyTouch.On_DragEnd+=MyDragEnd  //结束滑动时 

gesture.fingerIndex 等于0单指,1双指 //当前接触屏幕的手指数,在滑动屏幕时,需要先在On_DragStart中记录手指的数目,在On_Drag过程中检验手指数目是否和开始时数量一致 单个手指,多个手指都会调用这个方法

If(gesture.pickedGameobject=this.gameObject&& gesture.fingerIndex= =0){}

//获得当前触摸点在世界中的位置,世界坐标触摸点离摄像机的距离和传入参数的物体到摄像机的距离相同

Vector3 touchPointInWorld = gesture.GetTouchToWorldPoint( gesture.pickObject.transform.position)

// 拖动的角度 ;  xy轴   -180°到180°  x轴正方向 0° y轴正方向 90° y轴负方向 -90°
float angle=gesture.GetSwipeOrDragAngle();  

划过姿势

EasyTouch.OnSwipe += MySwipe
EasyTouch.swipeDirection swipe=gesture.swipe;   //滑动方向 :  上下左右

以上触摸的事件都在写在每个被触摸的脚本中,下面是用一个全局的脚本来管理所有的触摸事件

该示例来自 插件中RTS_Example_With_New_Syntaxe demo场景

在update函数中

更新 当前的Gesture

Gesture currentGesture=EasyTouch.current;
if(currentGesture.type=EasyTouch.EvtType.On_SimpleTap) //如果当前触碰的是单指点击事件

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 游动-白 设计师:上身试试 返回首页
实付 19.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值