zoukankan      html  css  js  c++  java
  • Unity5.5+easytouch5双摇杆控制角色移动

    第一步:新建两个Joystick,分别改名LeftJoyStick和RightJoyStick

    在LeftJoyStick的ETC Joystick-Axes properties中的Horizontal axis-General setting中将要控制的人物Player拖入框中,action选translate,Affected action选 X

    到现在位置,就可以通过左摇杆控制人物移动了,人物移动太快怎么办,Speed调慢点即可。

    下面开始设置人物移动时要调用Move动画,用bool控制,这个事先做好这里不再阐述,那么如何调用呢?

    打开Player角色下的Player脚本(原先键盘控制的脚本),添加两个公开函数

    1 public void RunAnimatorOpen()
    2 {
    3 m_Animator.SetBool("move", true);
    4 }
    5 
    6 public void RunAnimatorStop()
    7 {
    8 m_Animator.SetBool("move", false);
    9 }

    然后在leftjoystick的etc的MoveEvents框中的OnMoveStart()和OnMoveEnd()

    分别将Player角色物体拖入target框选择Gameobject.BroadcastMessage,下面分别填入

    RunAnimatorOpen

    RunAnimatorStop

    这时候摇杆移动就会调用RunAnimatoropen函数,不移动就调用RunAnimatorStop函数,从而达到控制动画的效果。

    第二步,开始对右摇杆设置,首先在Player脚本添加下面一段

    1 public void MoveInRightJoyStick(Vector2 weizhi)
    2 {
    3     if (weizhi.y != 0 || weizhi.x != 0)
    4     {
    5     //设置角色的朝向(朝向当前坐标+摇杆偏移量)
    6     transform.LookAt(new Vector3(transform.position.x + weizhi.x,              transform.position.y, transform.position.z + weizhi.y));
    7     }
    8 }

    简单来说就是easytouch通过OnMoveSpeed传出一个Vector2,所以我们要在Player脚本创一个函数(变量是Vector2)用于接受传出的Vector2,并且利用这个与人物的位置构成一个矢量,再用LookAt就能控制人物朝向了。

    调试没问题后,但是发现死亡后还能移动和旋转,怎么办?

    第三步,原本在人物Player下有一个HealthManager的脚本,里面有个Dead()的函数,一旦hp<=0后就会禁用有关脚本的调用,这时我们只要在函数中其中加两句

    1 ETCInput.SetControlActivated("LeftJoystick", false);
    2 ETCInput.SetControlActivated("RightJoystick", false);

    即可实现死亡后双摇杆的禁用,到此时就大功告成!!

  • 相关阅读:
    Vim快捷键,行首行尾
    java程序 cpu占用过高分析
    svn merge操作
    linux root用户无法删除文件,提示permission denied
    诡异问题:tomcat启动一直卡住,strace跟踪提示apache-tomcat核心文件找不到。
    转:xcode项目打不开:incompatible project version问题
    路由器当交换机用
    visual studio远程调试 remote debugger
    Sql server锁
    long 在不同操作系统下所占用的字节数
  • 原文地址:https://www.cnblogs.com/AaronBlogs/p/7049535.html
Copyright © 2011-2022 走看看