zoukankan      html  css  js  c++  java
  • Unity插件研究-EasyTouch V5

    抽空研究了下Easy Touch 5插件,发现确实很好用,下面是相应的用法:

    1. Easy Touch Controls:实现虚拟摇杆的组件

            在项目的"Hierarchy"窗口下,创建摇杆操作点击GameObject=>EasyTouchControls=>Joystick,创建完之后会在Hierarchy面板出现摇杆物体,Game视图也会出现一个摇杆,这个插件应该是基于UGUI写的,它的物体出现方式和创建Canvas下的控件一样(所以自定义事件和UGUI添加事件的方法基本是类似的),也会出现Canvas和EventSystem,而Joystick也会成为Canvas的子物体。添加完摇杆,还会出现一个"InputManager"的游戏物体,这个应该是EasyTouch用来实现用户输入的控制的,如果删除这个游戏物体,游戏运行时就会动态生成这个游戏物体,下面是一些配置:

                   名字、启动时是否可见,是否激活,如果有物理引擎,是需要使用FixedUpdate的

                 摇杆显示的位置,偏移量、尺寸大小

                  摇杆的轴配置,这是水平轴的,比如控制物体旋转,Speed设置为200,给它控制的物体(也可以使用Auto link on tag,使用标签方式),Action使用"Rotate Local",基于“Y"轴

                 摇杆的轴配置,这是垂直轴的,用来配置延”Z"轴进行前后移动

                  实现第三人称游戏时,经常需要相机跟随,可以“Enable tracking",使用”MainCamera",链接好要跟随的游戏物体,相机跟随使用“Smooth Follow",可以控制相机跟随的高度、距离、

                   这个用来配置虚拟摇杆的图片

                如果不用自动配置,想使用自己的代码来控制物体移动,代码中是使用:

    ETCInput.GetAxis("Vertical")
    ETCInput.GetAxis("Horizontal")

                唯一不好的是这个插件导入后,给了一大堆示例和文档,如果是项目开发会增加不少的size,做了相应的精减,只有200多K了https://files-cdn.cnblogs.com/files/bearhb/EasyTouchControls-min.rar

     2. Easy Touch:实现手势控制的组件

          (1)Hierarchy窗口中必须右键,生成"EasyTouch" ->"EasyTouch"物体;

          (2)QuickGesture:这个实在是太猛了, 如果想给某个游戏物体添加手势的一些事件,直接添加下面某个组件就可以了:

                      例如一个cube如果想被拖动,直接添加“Quick Drag"组件,这个Cube就可以实现拖动了,而且拖动的事件和UGUI完全一致;

          (3)如果需要在程序中进行手势判断,是需要下面的脚本:

    using HedgehogTeam.EasyTouch;
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class TouchManager : MonoBehaviour
    {
        private Renderer ren;
        private void Start()
        {
            ren = GetComponent<Renderer>();
        }
        void Update()
        {
            
            // 获取当前玩家输入的手势
            Gesture currentGesture = EasyTouch.current;
            //如果有手势
            if (currentGesture != null)
            {
                //区分手势进行检测
                switch (currentGesture.type)
                {
                    //开始触摸
                    case EasyTouch.EvtType.On_TouchStart:
                        Debug.Log("OnTouchStart");
                        Debug.Log("startPosition" + currentGesture.startPosition);
                        OnTouchStart(currentGesture);
                        break;
                    //结束触摸
                    case EasyTouch.EvtType.On_TouchUp:
                        OnTouchEnd(currentGesture);
                        break;
                    //开始滑动
                    case EasyTouch.EvtType.On_Swipe:
                        OnSwipe(currentGesture);
                        break;
                    //简单点击下
                    case EasyTouch.EvtType.On_SimpleTap:
                        Debug.Log("点击下");
                        break;
                    //长按
                    case EasyTouch.EvtType.On_LongTap:
                        Debug.Log("长按");
                        break;
                }      
            }
        }
        void OnTouchEnd(Gesture gesture)
        {
            Debug.Log("OnTouchEnd");
            Debug.Log("actionTime" + gesture.actionTime);
        }
    
        void OnSwipe(Gesture gesture)
        {
            Debug.Log("OnSwipe");
            //滑动的枚举(上、下、左、右、其他)
            Debug.Log("swipe" + gesture.swipe);
        }
    
        void OnTouchStart(Gesture gesture)
        {
            if (gesture.pickedObject == gameObject)
            {
                ren.material.color = new Color(Random.Range(0, 1.0f), Random.Range(0, 1.0f), Random.Range(0, 1.0f));
            }
        }
    }

                 

  • 相关阅读:
    将Vim改造为强大的IDE
    Ubuntu首次开启root用户
    ssh-keygen实现免密码登陆
    Ubuntu下配置samba服务器实现文件共享
    Ubuntu下Apache+php+mysql网站架设详解
    IIS支持PHP
    详解C/C++预处理器
    学C++之感悟
    return *this和return this的区别
    const 的全面总结
  • 原文地址:https://www.cnblogs.com/bearhb/p/11425384.html
Copyright © 2011-2022 走看看