您当前的位置: 首页 >  unity

Unity插件EasyTouch学习笔记

发布时间:2020-09-21 19:53:06 ,浏览量:8

前言

EasyTouch是一款非常好用识别手机操作的插件,比如各种手势、摇杆等等,熟悉之后可以节约大量造轮子的时间。 我是在2019版本的Unity上进行测试的。

4.x用法

注意事项: 代码需要引用HedgehogTeam.EasyTouch。 场景中必须有EasyTouch物体。导入插件后在Hierarchy面板右键即可选择生成。 在这里插入图片描述 4.x用法就是往EasyTouch中设置好的事件中注册方法。注意注册的方法的无返回值,参数为Gesture。下图为部分。在这里插入图片描述 代码示例:

//场景中需要有EasyTouch物体 void OnEnable() { EasyTouch.On_TouchStart += OnTouchStart; EasyTouch.On_TouchUp += OnTouchEnd; EasyTouch.On_Swipe += OnSwipe; } void OnDisable() { EasyTouch.On_TouchStart -= OnTouchStart; EasyTouch.On_TouchUp -= OnTouchEnd; EasyTouch.On_Swipe -= OnSwipe; } void OnTouchStart(Gesture gesture) { Debug.Log("Start"); Debug.Log("StartPos" + gesture.startPosition); //按下的位置 } void OnTouchEnd(Gesture gesture) { Debug.Log("End"); Debug.Log("ActionTime" + gesture.actionTime); //操作时长 } void OnSwipe(Gesture gesture) { Debug.Log("Swipe"); Debug.Log("Type" + gesture.swipe); //滑动的方向 } 
5.x用法

5.x用法不需要在场景中手动创建EasyTouch 在代码中声明Gesture时会自动在场景中创建EasyTouch 此用法核心就是判断当前操作type。

示例代码:

Gesture currentGesture; //声明可以自动生成EasyTouch private void Update() { currentGesture = EasyTouch.current; if(currentGesture != null && EasyTouch.EvtType.On_TouchStart == currentGesture.type) //注意防空,如果无操作currentGesture为null { Debug.Log("TouchStart"); } } 
模拟双指操作

EasyTouch能够模拟双指操作,非常方便。首先场景运行时必须要有EasyTouch物体。在这里插入图片描述 然后我们按住Ctrl或Alt就会出现我们的“第二根手指”,按住ctrl键是让第二根手指跟随鼠标,alt是让第二根手指与鼠标对称运动。可以通过同时按住ctrl和alt然后松开其中一个调整手指位置,具体效果试下就知道了。

新特性QuickGesture

EasyTouch插件可以不使用代码完成一些操作,比如拖拽、旋转、缩放、长按、双击等等,非常简便。这就需要使用到QuickGesture,我们可以通过AddCompontent完成这一操作。下面对QuickGesture进行简单介绍。(除UI外需要加collider) 要注意缩放和旋转不容易精确区分。

QuickDrag(拖拽): QuickName:区分组件的id Allow on the axes:允许运动的轴 Allow pick over UI element:是否允许穿透UI Stop drag on collision enter:当碰到collision时是否停止 Rest physic on drag:拖拽时是否停止使用物理效果 On Drag Start(Gesture):不同阶段注册的UnityEvent 在这里插入图片描述

Quick Enter-Over-Exit(进入时、停留、退出时 判定): ALLow mult-touches:是否允许多指操作 在这里插入图片描述 Quick LongTap(长按判定): 2 fingers gesture: Action triggering:分为三种类型,Start(开始时)、In Progress(持续)、End(结束时) //如果需要每不同段都检测的话就重复添加然后改变Action就行了。

在这里插入图片描述 QuickPinch(缩放):

Gesture over me:手势是否在我身上(如不勾选则必须在外面,由此解释缩放可不加collision) Pinch direction:缩放方向 Enable simple action:启用简单行为 Action:此操作执行的行为,如缩放,移动,旋转等 Affected axes:受影响的轴向 Sensibility:执行 Inverse axis:敏感度(行为效果大小) 在这里插入图片描述

QuickSwipe(滑动) Allow swipe start over me:允许在物体上开始(注意容易和Drag弄混) 在这里插入图片描述

QuickTap(点击) Action triggering:可以选择单击还是双击 在这里插入图片描述

QuickTouch(触摸) 在这里插入图片描述

QuickTwist(旋转,拧) 在这里插入图片描述

Joystick(摇杆)

下面讲一下非常常用的摇杆(Joystick)功能。

Joystick name:摇杆名字。要注意在Hierarchy面板上是无法重命名只能通过这里。 Activated:是否激活 Visible:是否可见 UseFixedUpdate:是否用FixedUpdate控制 Unregister at disabling time:停用时注销 在这里插入图片描述 Type :选择静态(static)还是动态(dynamic),静态就是摇杆保持显示状态位置固定不动,动态就是玩家触摸的时候才会在手指的位置显示。 Background size:摇杆底图的大小 Thumb size: 中间可移动的按钮的大小。 Radius based on :半径基于。 在这里插入图片描述 Enable Unity axes :是否启用Unity的轴 Turn&Move direction Action :启用可以对物体进行如旋转位移的简单操作。 在这里插入图片描述

Horizontal axis:相当于这个轴的识别符。 React on:操作模式,有Press和Down,Press是一直执行,Down是执行一次。 Dead zone method:死区,相当于这个轴触发的缓冲区,具体自己测试。 Inverted axis:反转操作。 On/Off Threshold: 触发的阈值。 Speed: 速度。

Direction action:可以对物体进行简单操作,可以通过拖拽赋值或者tag获取物体,勾选Auto link on tag即可通过tag获取操控对象。tag操控对象即使是后面生成的也可以操控。

Gravity Inertia smoothing:启用惯性

Unity axes :对应unity的哪个input,可以在input setting中设置。

在这里插入图片描述 Vertical axis与上面类似。 在这里插入图片描述

Enable tracking: 是否启用镜头跟踪。启用该选项可以实现简单的镜头跟踪效果。 在这里插入图片描述 Sprites:设置摇杆的素材。 在这里插入图片描述 后面都是触发事件。 在这里插入图片描述

用代码结合摇杆实现旋转位移

其他事件注册以此类推。

[SerializeField] private ETCJoystick joy; [SerializeField] private Rigidbody rig; [SerializeField] private float runSpeed = 2.0f;//移动速度 [SerializeField] private Animation anim; private void Start() { joy.onMoveEnd.AddListener(() => onMoveEnd()); joy.OnPressLeft.AddListener(() => JoystickHandlerMoving()); joy.OnPressRight.AddListener(() => JoystickHandlerMoving()); joy.OnPressUp.AddListener(() => JoystickHandlerMoving()); joy.OnPressDown.AddListener(() => JoystickHandlerMoving()); } void onMoveEnd() { rig.velocity = Vector3.zero; } void JoystickHandlerMoving() { if (joy.name != "TestJoystick") { return; } //获取虚拟摇杆偏移量  float h = joy.axisX.axisValue; float v = joy.axisY.axisValue; if (Mathf.Abs(h) > 0.05f || (Mathf.Abs(v) > 0.05f)) { Quaternion rota = transform.rotation; Quaternion finl = Quaternion.LookRotation(new Vector3(h, 0, v)); transform.rotation = Quaternion.LerpUnclamped(rota, finl, 0.5f); rig.velocity = new Vector3(h * runSpeed, rig.velocity.y, v * runSpeed); } } 
文档

具体的一些介绍和详细参数可以参考文档。导入插件后在如下目录可以找到。 在这里插入图片描述

关注
打赏
1688896170
查看更多评论

暂无认证

  • 8浏览

    0关注

    115984博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0482s