EasyTouch
在场景目录列表中 添加EasyTouch物体
EasyTouch触屏功能开启或关闭
Enable Unity Remote
远程unity ? 开启多指触屏模式 (最终打包时,关闭此选项)
GUI兼容
Enable Uniyt UI detection
开启或关闭Unity UI元素触屏识别
Unity UI compatibility
Enable : 如果开启,则手指在接触UI元素时不触发EasyTouch的相关手势事件
Disable : 触发EasyTouch的相关手势事件,并在gesture参数中设置Gesture.isOverUIElement为true.
Enable : 每帧更新UI组件
NGUI相关忽略
可交互元素
Enable auto-select
3d物体时能被触摸识别
pickable layers 3D
能够被触摸识别的3d物体层级
Auto update picked gameobject
每帧更新当前触摸的游戏物体对象
Enable 2D collider
开启2d物体碰撞器识别
pickable 2D layers
能够被触摸识别的2d物体层级
手势参数设置
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
最小能够识别旋转角度
在场景中一个物体上添加Easytouch物体
Using HedgehogTeam.EasyTouch; //引用插件
单个手指操作
1: 单指触摸屏幕
被触摸的物体脚本中添加以下事件
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 +=
双指拖动
EasyTouch.OnDragStart2Fingers
EasyTouch.OnDrag2Fingers
EasyTouch.OnDragEnd2Fingers
双指捏,压紧
EasyTouch.OnTouchStart2Fingers
EasyTouch.OnPinchIn //双指向内挤压
EasyTouch.OnPinchOut //双指相反方向移动
EasyTouch.OnPinchEnd //结束捏的动作
在OnTouchStart2Finger 监听事件函数中
开启pinch模式
EasyTouch.SetEnablePinch(true);
关闭扭转模式
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) //获得当前触摸点在世界中的位置,世界坐标触摸点离摄像机的距离和传入参数的物体到摄像机的距离相同
float angle=gesture.GetSwipeOrDragAngle(); // 拖动的角度 ; xy轴 -180°到180° x轴正方向0° y轴正方向 90° y轴负方向 -90°
划过姿势
EasyTouch.OnSwipe += MySwipe
EasyTouch.swipeDirection swipe=gesture.swipe; //滑动方向 : 上下左右
以上触摸的事件都在写在每个被触摸的脚本中,下面是用一个全局的脚本来管理所有的触摸事件
该示例来自 插件中RTS_Example_With_New_Syntaxe demo场景
在update函数中
更新 当前的Gesture
在update函数中
更新 当前的Gesture
Gesture currentGesture=EasyTouch.current;
if(currentGesture.type=EasyTouch.EvtType.On_SimpleTap) //如果当前触碰的是单指点击事件
.....