EasyTouch

EasyTouch

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

 

EasyTouchEnable 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

手势方向角度误差  

 

双指手势属性

EasyTouch
 

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)  //如果当前触碰的是单指点击事件

 

.....