Unity插件EasyTouch学习笔记

前言

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);
        }
    }

文档

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

Unity3D是一款非常流行的游戏开发引擎,而EasyTouch是一款适用于Unity3D的轻松触控解决方案。EasyTouch可以帮助开发者在Unity3D中实现多种触控操作,例如单指触控、双指缩放、旋转、拖拽等等。 为了下载Unity3D EasyTouch5,您可以按照以下步骤进行操作: 1. 首先,您需要访问Unity3D的官方网站。您可以通过在浏览器中搜索"Unity3D官方网站"来找到它。 2. 在Unity3D官方网站上,您可以找到一个名为"Asset Store"的选项。点击这个选项,您将被带到Unity Asset Store的页面。 3. 在Unity Asset Store的页面上,您可以使用搜索栏来查找EasyTouch5。输入"EasyTouch5"并点击搜索按钮。 4. 您将看到EasyTouch5的搜索结果。点击其中一个结果以查看EasyTouch5的详细信息。 5. 在EasyTouch5的详细信息页面上,您将找到一个名为"Add to My Assets"的按钮。点击这个按钮以将EasyTouch5添加到您的Unity3D项目中。 6. 您将被要求登录到您的Unity账户。如果您尚未创建账户,您需要先创建一个账户以完成登录。 7. 在登录后,您将看到一个名为"Download"的按钮。点击这个按钮以开始下载EasyTouch5。 8. 完成下载后,您可以在Unity3D中导入EasyTouch5。具体的导入步骤可以在Unity的官方文档或EasyTouch的文档中找到。 总的来说,下载Unity3D EasyTouch5非常简单。您只需要访问官方网站,找到并下载EasyTouch5,然后将其导入到您的Unity项目中即可开始使用。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我寄人间雪满头丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值