IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> Unity EasyTouch5 + FGUI 基本运用 - 技能释放与技能取消释放 -> 正文阅读

[游戏开发]Unity EasyTouch5 + FGUI 基本运用 - 技能释放与技能取消释放

前言

unity入门小白一个,最近在练习作品中尝试使用双摇杆的操控,来达到以下效果:
在这里插入图片描述

一句话内容:
easyTouch 自带的 Button 组件会影响虚拟摇杆的事件监听,导致不能实现拖拽后释放技能的效果,所以推荐用UGUI或者FGUI做一个新的 button

EasyTouch5的导入

官网地址:unity商店地址
学习版(v5.0.8)地址:点击前往

现在网络上的版本比较多,最新版本是这个
商店截图
下载好后可以双击导入摇杆包
红线部分可以不用导入
红线部分可以不用导入

然后在这边就能看到能使用的组件包了
在这里插入图片描述

Joystick使用

在这里插入图片描述
然后在Axes Properties里绑定操作的对象
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
这个就是基本的使用绑定,可以操作的内容和参数非常的多,基本够用。

但我这边人物是用的Uniyt的人物控制器CharacterController来进行移动的,那么就需要进行绑定关联

    private ETCJoystick L_joystick;//声明摇杆
    void Start()//
    {
        cc = gameObject.GetComponent<CharacterController>();//角色控制器
        animator = GetComponent<Animator>();//人物动画控制器
        L_joystick = ETCInput.GetControlJoystick("PlayerMove");//左摇杆

    }

这里注意了,ETCInput.GetControlJoystick("PlayerMove")中的名字是在编辑器这个位置设定的,只能靠名字来确认是哪个摇杆。
在这里插入图片描述
在Awake中写我遇到了报错,估计是没设置好加载顺序的问题。
然后在Update里写控制就好

        //角色使用摇杆移动
        float lx = L_joystick.axisX.axisValue;//摇杆横向参数
        float ly = L_joystick.axisY.axisValue;//摇杆纵向参数

        //角色旋转
        Quaternion rota = player.transform.rotation;        
        if (lx != 0 || ly != 0 && !pitfallMoveBool)
        {
            
            moveV3 = new Vector3(lx, 0, ly).normalized;
            cc.SimpleMove(moveV3 * speed);

			Quaternion finl = Quaternion.LookRotation(new Vector3(lx, 0, ly));//
            player.transform.rotation = Quaternion.LerpUnclamped(rota, finl, 0.5f);
        }
        else
        {
            cc.SimpleMove(Vector3.zero);//设置归零
        }

这里我手动设置了下面向,其实也可以通过绑定摇杆的Rotate Local
来实现

然后是右手的摇杆设置


    //----操控---
    private ETCJoystick L_joystick;
    private ETCJoystick R_joystick;//获取右手的摇杆
    void Start()
    {
        R_joystick = ETCInput.GetControlJoystick("Fire&Aim");//获得摇杆
        
		//对事件进行监听	
        R_joystick.onTouchStart.AddListener(R_joystickTouchStar);
        R_joystick.onMove.AddListener(R_joystickTouchMove);//这里必须要能传Vector2 参数的方法
        R_joystick.onMoveEnd.AddListener(R_joystickTouchEnd);
    }


    public void R_joystickTouchStar() 
    {
		//开始触摸时的模块

    }

    public void R_joystickTouchEnd()
    {
		//结束触摸时的模块
    }


    public void R_joystickTouchMove(Vector2 v2)
    {
		//移动时候的模块
    }

}

然后是技能范围绘制,这部分可以参考:利用Easy Touch实现Moba游戏技能释放(前言)

导入FGUI的Button

导入FGUI设置好的button
在这里插入图片描述
在这里插入图片描述
然后获取Button
在这里插入图片描述



    private CharacterController cc;
    public GameObject player;


    //----操控---
    private ETCJoystick L_joystick;
    private ETCJoystick R_joystick;
    private bool isCancelAim;//设定
    
	//----FGUI---
    private GButton cancelAim;
    void Start()
    {
        cc = gameObject.GetComponent<CharacterController>();
        animator = GetComponent<Animator>();

        L_joystick = ETCInput.GetControlJoystick("PlayerMove");
        R_joystick = ETCInput.GetControlJoystick("Fire&Aim");

        
        R_joystick.onTouchStart.AddListener(R_joystickTouchStar);
        R_joystick.onMove.AddListener(R_joystickTouchMove);
        R_joystick.onMoveEnd.AddListener(R_joystickTouchEnd);



        cancelAim = GameObject.Find("UIMain").GetComponent<UIPanel>().ui.GetChild("n17").asButton;
        cancelAim.visible = false;//初始化让button不可见,只有在挪动的时候可见
    }



    void Update()
    {
        cancelAim.onRollOver.Add(CancelAimButtonPress);//监听挪入后事件
        cancelAim.onRollOut.Add(CancelAimButtonUp);//监听挪出后事件
	}

    public void CancelAimButtonPress()
    {
        isCancelAim = true;//设定一个全局的bool来判断是不是要取消技能释放
    }

    public void CancelAimButtonUp()
    {
        isCancelAim = false;
    }
    

    public void R_joystickTouchMove(Vector2 v2)
    {
        cancelAim.visible = true;//移动时候Button出现
    }
    
    public void R_joystickTouchEnd()
    {

        if (isCancelAim)//判断是否是取消释放的时机
        {
            Debug.Log("取消释放");
        }
        else
        {
        	//……
        }
        cancelAim.visible = false;//移动结束,将取消释放的按钮隐藏
    }

为啥不用自带的button

先新建一个button,并且打开滑动判断
在这里插入图片描述

在这里插入图片描述
当挪入到button时候,摇杆的move会被顶掉,再挪出虽然还是触摸状态,但是摇杆已经归零重置了。

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2021-07-15 16:34:29  更:2021-07-15 16:34:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 3:37:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码