为什么Unity动画不能在横向工作?

时间:2014-10-14 04:39:34

标签: unity3d unityscript

我用团结来开发2D游戏。我使用了EasyTouch包。当左右键使用键码时,通过设置左侧的flag = 3和右侧的flag = 4来触发动画。但是,如果我使用操纵杆,左右两侧的动画都不起作用。有人可以帮我解决这个问题吗?非常感谢。

void Movement()
{   
    if(joystick.JoystickAxis.x<0)
    {

    //if (Input.GetAxisRaw("Horizontal")<0) {
        anim.SetInteger("flag",3);
        transform.Translate(Vector3.left*speed*Time.deltaTime);

    }

    if(joystick.JoystickAxis.x>0)
    {
        //if(Input.GetAxisRaw("Horizontal")>0) {
        anim.SetInteger("flag",4);
        transform.Translate (Vector3.right*speed*Time.deltaTime);
    }

    if(joystick.JoystickAxis.y<0)
    {
         anim.SetInteger("flag",1);
         //if (Input.GetAxisRaw("Vertical")<0) {
         transform.Translate (Vector3.down*speed*Time.deltaTime);

    }

    if(joystick.JoystickAxis.y>0)
    {
        anim.SetInteger("flag",2);
        //if (Input.GetAxisRaw("Vertical")>0) {
        transform.Translate (Vector3.up*speed*Time.deltaTime);
    }
}

2 个答案:

答案 0 :(得分:0)

您还可以为脚本使用Input.GetAxis(&#34; Horizo​​ntal&#34;)方法。但为此,您必须更改项目输入设置。要执行此操作请执行以下步骤:

  • 转到修改 - &gt; 项目设置 - &gt; 输入
  • 检查器菜单下,您会找到列表。
  • 下有水平选项。
  • 水平下方有类型的下拉列表。
  • 选择 JoyStick Axis
  • 类型旁边有。选择 X轴

现在尝试像这样测试你的脚本。

if (Input.GetAxisRaw("Horizontal")<0) {
    anim.SetInteger("flag",3);
    transform.Translate(Vector3.left*speed*Time.deltaTime);

}

您可以要求任何进一步的帮助。

答案 1 :(得分:0)

最后,我找到了答案:因为我把Movement()函数放在Update()中。这意味着每次我使用操纵杆时,它都会更新动画。因此,水平动画总是被垂直动画取代。 这是修改后的版本:
    void运动()     {
        如果(joystick.JoystickAxis.x&LT; -Mathf.Abs(joystick.JoystickAxis.y)){             anim.SetInteger(&#34;标志&#34;,3);             transform.Translate(Vector3.left 速度 Time.deltaTime);         }         如果(joystick.JoystickAxis.x&GT; Mathf.Abs(joystick.JoystickAxis.y)){             anim.SetInteger(&#34;标志&#34;,4);             transform.Translate(Vector3.right speed Time.deltaTime);         }         如果(joystick.JoystickAxis.y&LT; -Mathf.Abs(joystick.JoystickAxis.x)){             anim.SetInteger(&#34;标志&#34;,1);             transform.Translate(Vector3.down speed Time.deltaTime);         }         如果(joystick.JoystickAxis.y&GT; Mathf.Abs(joystick.JoystickAxis.x)){             anim.SetInteger(&#34;标志&#34;,2);             transform.Translate(Vector3.up speed Time.deltaTime);         }     }