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会被顶掉,再挪出虽然还是触摸状态,但是摇杆已经归零重置了。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
EasyTouch是一个在Unity中使用的触摸输入插件。在使用EasyTouch之前,你需要在场景中创建一个EasyTouch物体,并在其上添加EasyTouch脚本。如果你使用的是EasyTouch四代,还需要创建一个名为EasyTouchManager的GameObject,并将EasyTouchManager4_Demo.cs脚本附加到EasyTouchManager上。\[1\] 你可以从百度云上下载EasyTouch插件,并将其导入到Unity项目中。请注意,这个插件仅供学习使用,如果你需要商业使用,请去官网购买正版。\[2\] 在使用EasyTouch时,你可以通过注册和监听事件来响应触摸输入。例如,你可以创建一个名为TouchTest的脚本,并在其中订阅On_TouchStart事件。当手指接触屏幕时,On_MyTouchStart方法将被执行,并打印出触摸到屏幕的坐标。记得在适当的时候取消订阅事件,以避免内存泄漏。\[3\] 希望这些信息对你有帮助!如果你还有其他问题,请随时提问。 #### 引用[.reference_title] - *1* *2* [Unity- EasyTouch(一)](https://blog.csdn.net/qq_40985921/article/details/88734354)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Unity3d插件 之 Easytouch](https://blog.csdn.net/mengyin521/article/details/50706323)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值