入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

Unity插件EasyTouch学习记录

创建时间:2017-05-10 投稿人: 浏览次数:2895

为了有朝一日能从一名Unity多媒体程序员转变为Unity游戏程序员,我最近一直有学习,我相信戒掉网瘾后的我一定会成功的。尴尬

今天抽时间看了看EasyTouch,是一款非常强大的解决移动端触摸事件的插件。

上一次用它还是在15年在培训机构做项目孵化的时候,我依稀记得那是一个失败的项目,锅不在我,就不回忆了。

首先是在论坛搜一搜,然后花论坛币下载了一个,然后导入。



导入后的目录,EasyTouch应该指的是基本的手势功能,easytouch controls里面有摇杆、Dpad、按钮之类封装好的实用功能。Install里面还有一个playermaker的安装包。

文档案例都很齐全,可以快速上手。


我看了看文档里的quick start,决定做一个简易的demo,我只在场景里放一个cube,当我用一根手指在屏幕上滑动的时候,我需要cube旋转;当我对它拖拽时,需要它跟着手指移动;当我用两根手指滑动时相机平面移动;当我双指向内捏或者向外拉时相机拉近或远。



1.首先添加 easytouch游戏对象,它本身有许多设置选项,我大概过了一下,然后,啥也没记住。

这个简易demo里也不需要修改什么。

2.创建cube

3.创建脚本,并挂给cube

4.编写脚本


这是easytouch中订阅事件的方法,EasyTouch下定义了各种类型的事件,我们只需要编写相应处理方法,然后+=订阅。在OnEnable中订阅,在OnDisable和OnDestroy中取消订阅。方法要传一个Gesture类型的参数,包含了手势的数据。


我的EasyTouchTest

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using HedgehogTeam.EasyTouch;
using UnityEngine.UI;
public class EasyTouchTest : MonoBehaviour {
    public Button BtnReset;
	// Use this for initialization
	void Start () {
		
	}
	
	// Update is called once per frame
	void Update () {
		
	}

    void OnEnable() {
        EasyTouch.On_Swipe += On_Swipe;
        EasyTouch.On_Drag += On_Drag;
        EasyTouch.On_Swipe2Fingers += On_Swipe2Fingers;
        EasyTouch.On_Pinch += On_Pinch;
        BtnReset.onClick.AddListener(ResetScene);
    }

    void OnDisable() {
        EasyTouch.On_Swipe -= On_Swipe;
        EasyTouch.On_Drag -= On_Drag;
        EasyTouch.On_Swipe2Fingers -= On_Swipe2Fingers;
        EasyTouch.On_Pinch -= On_Pinch;
        BtnReset.onClick.RemoveListener(ResetScene);
    }

    void OnDestroy() {
        EasyTouch.On_Swipe -= On_Swipe;
        EasyTouch.On_Drag -= On_Drag;
        EasyTouch.On_Swipe2Fingers -= On_Swipe2Fingers;
        EasyTouch.On_Pinch -= On_Pinch;
        BtnReset.onClick.RemoveListener(ResetScene);
    }

    /// <summary>
    /// 重置cube和相机
    /// </summary>
    void ResetScene() {
        transform.position = Vector3.zero;
        transform.rotation = Quaternion.Euler(Vector3.zero);
        Camera.main.transform.position = new Vector3(0, 0, -10);
    }

    /// <summary>
    /// 滑动使cube旋转
    /// </summary>
    /// <param name="ges"></param>
    void On_Swipe(Gesture ges) {
        Vector3 vec = new Vector3(ges.deltaPosition.y, ges.deltaPosition.x, 0);
        transform.Rotate(vec ,Space.World);
    }

    /// <summary>
    /// 拖拽移动cube
    /// </summary>
    /// <param name="ges"></param>
    void On_Drag(Gesture ges) {
        if (ges.pickedObject == gameObject) {
            transform.position = ges.GetTouchToWorldPoint(10);//相机z=-10 cube 0
        }
    }

    /// <summary>
    /// 双指滑动 平面移动相机
    /// </summary>
    /// <param name="ges"></param>
    void On_Swipe2Fingers(Gesture ges) {
        Camera.main.transform.Translate(new Vector3(-ges.deltaPosition.x, -ges.deltaPosition.y, 0));
    }

    /// <summary>
    /// 拉近拉远相机
    /// </summary>
    /// <param name="ges"></param>
    void On_Pinch(Gesture ges) {
        Camera.main.transform.Translate(new Vector3(0, 0, ges.deltaPinch));
    }
}
参数还需要调整,但之前的小目标是实现了,因为容易一下子就把我的小Cube弄不见了,我就添加了一个复位按钮。


摇杆

剩下的我比较感兴趣的也就是摇杆了,毕竟这个东西挺常用,而且,如果你说要让我自己从头做一个,我还是觉得挺懵逼的···

右键EasyTouchControls->Joystick创建一个摇杆

常用的设置可能也就是Type,决定了摇杆是动态的还是静态的,静态就是坐标固定,动态的话当手指离开屏幕,摇杆会消失,手触摸的时候在手指触摸的坐标生成摇杆。

设为动态时可以选择摇杆区域全屏,半屏,还可以自定义区域。

摇杆的值

Debug.Log(ETCInput.GetAxis("Horizontal")+","+ ETCInput.GetAxis("Vertical"));



easytouch真的十分强大方便易上手,并且跟UGUI没有什么冲突。更多的功能只有在实际使用中去研究了。

声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
  • 上一篇:没有了
  • 下一篇:没有了
未上传头像