前言

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; //声明可以自动生成EasyTouchprivate 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);}}

文档

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

Unity插件EasyTouch学习笔记相关推荐

  1. Unity插件 EasyTouch

    原文链接 https://blog.csdn.net/q764424567/article/details/78426905 参考资料: Unity3D教程之EasyTouch插件 http://ww ...

  2. Unity超基础学习笔记(二)

    Unity超基础学习笔记(二) 1. 基本数据类型的扩展 之前在K12中学习了一些基本的数据类型,实际上C#支持更多的数据类型.如下: 注意无符号整型数和有符号整型数的表示范围,例如: int 能表示 ...

  3. Unity动画状态机学习笔记

    Unity动画状态机学习笔记 一.建平面,拖人物模型.建状态机.动画导入.拖组件--实现Game时人物动画为等待状态. 二.拖WAIT01.WAIT02.WAIT03.WAIT04--实现按数字1切换 ...

  4. Unity之C#学习笔记(11):静态类型 Static

    前篇链接:Unity之C#学习笔记(10):接口和多态 Interfaces and Polymorphism 静态类型(Static)用一句话概括就是:在程序运行期间只会被创建一份的通用内容,用关键 ...

  5. 【Unity NGUI】学习笔记(二)之英雄攻击和装备武器

    玩魔兽世界的时候,游戏人物可以行走,奔跑,攻击,死亡等等行为,今天继续结合上一个案例[Unity NGUI]学习笔记(一):英雄选择,皮肤更换上给英雄添加动作行为. 一.准备工作 给英雄准备奔跑 攻击 ...

  6. Unity游戏框架学习笔记——03基于观察者模式的事件中心

    Unity游戏框架学习笔记--03基于观察者模式的事件中心 基于观察者模式的事件中心 一如既往指路牌:https://www.bilibili.com/video/BV1C441117wU?p=5. ...

  7. Unity UI Toolkit学习笔记-Runtime UI 案例实践

    Unity UI Toolkit学习笔记-Runtime UI

  8. Unity UGUI DoTween 学习笔记

    官网:http://dotween.demigiant.com/ 动画的基本设置 DOTween.defaultAutoKill:(全局操作) 当该值为真时,之后创建的动画当其播放完毕之后会自动被销毁 ...

  9. unity番外学习笔记-canvas在3d里的设置以及3d物体之间的碰撞

    学习笔记 canvas在3d里的设置 3d物体之间的碰撞 canvas在不同系统中如何做到适配 canvas在3d里的设置 需要在canvas里找到worldspace,canvas才能匹配3d的大小 ...

最新文章

  1. mysql 导入一个数据库_mysql导入一个数据库
  2. cookie、Session、Token、sessionStorage、localStorage简介__Token放在 cookie, sessionStorage 和 localStorage中区别
  3. Discuz! Ucenter API for JAVA jar包和测试代码
  4. java+icepdf+下载_Java使用icepdf将pdf文件按页转成图片
  5. Vue 给第三方组件加入自定义参数
  6. 天津大学计算机专硕_「20考研」计算机考研专业课变动汇总
  7. 6步学会VS封装DLL
  8. J2EE 第二阶段项目之JUnit4进行单元测试(五)
  9. 小型项目的微服务架构指南
  10. 计算机视觉(三)线性分类器
  11. Jquery斗地主牌型验证插件 1.0版
  12. 前端应用 - 汉字笔顺书写演示带拼音及发音
  13. oracle11 ssd 补丁,新装Oracle 11gR2 11.2.0.2重要说明——Patchset p10098816(附补丁下载地址).docx...
  14. PostgreSQL获得去、今、明年份、今年的第一天、去年的第一天转换时区、最后一天等
  15. 全球及中国智能家居市场十四五竞争形势及营销模式咨询报告2021-2027年
  16. Android: MultiDex原理和优化
  17. py:os模块:getcwd等处理文件和目录的方法
  18. ffmpeg开发之旅(4):MP3编码格式分析与lame库编译封装
  19. 图像处理算法(二)---图像常用颜色空间
  20. 锐捷AP胖模式配置方法

热门文章

  1. Daily question 1
  2. 微信网页开发,动态修改页面Title
  3. Qt之实现录音播放及raw(pcm)转wav格式
  4. makedepend
  5. (转)鲁 白 (2002年9月25日在复旦大学上海医学院的讲课录音记录)——如何在顶级科学杂志上发表论文
  6. spring-boot 报错报告
  7. 解决必应词典和mactype 渲染的冲突
  8. C++制作汉字版国际象棋(3)
  9. 23年电赛控制类笔记
  10. 《CSS基础入门篇》