切换到轴控制屏幕按钮控件时动画不起作用

时间:2017-01-16 11:30:57

标签: android animation unity3d touch unity5

我正在我的播放器上移动动画,代码如下:

if (Input.GetAxis ("Horizontal") > 0.5||Input.GetAxis ("Horizontal") < -0.5) {
            myRigidBody.velocity = new Vector2 (Input.GetAxis ("Horizontal") * moveSpeed, myRigidBody.velocity.y);
            robotMove = true;
            lastMove = myRigidBody.velocity.x;
        }

        anim.SetFloat ("MoveX", Input.GetAxis ("Horizontal"));
        anim.SetBool ("RobotMoving", robotMove);
        anim.SetFloat ("LastMoveX", lastMove);

如上所示,控件是轴控件(键盘)。

但是我希望这些动画能够在我在屏幕上创建的控制按钮上运行!

我有这两个按钮,如图所示:

btns on screen

我正在使用eventrigger onPointerDown并附加播放器 gameobject以便调用这些函数:

public void moveleft(){
        myRigidBody.velocity = new Vector2 (-moveSpeed, myRigidBody.velocity.y);
        robotMove = true;
        anim.SetFloat ("MoveX", -moveSpeed);
        anim.SetBool ("RobotMoving", robotMove);
    }

    public void moveright(){
        myRigidBody.velocity = new Vector2 (moveSpeed, myRigidBody.velocity.y);
        robotMove = true;
        anim.SetFloat ("MoveX", moveSpeed);
        anim.SetBool ("RobotMoving", robotMove);
    }

    public void jump(){
        if (grounded) {
            myRigidBody.velocity = new Vector2 (myRigidBody.velocity.x, jumpHeight);
        }

现在就像轴控制一样,玩家移动到一定距离(如果我继续按住,则不会连续)但是在轴上工作的动画不在这些按钮中工作

任何人都能说出它为什么会发生?

1 个答案:

答案 0 :(得分:1)

帮助别人我解决了我的问题如下:

您可以在update()或某些外部function()来电中仅拨打 amin.setxxx 所以我所做的就是把所有动画值放在我的moveLeft()和moveRight()函数中,如下所示:

public void moveLeft(){



        myRigidBody.velocity = new Vector2 (-moveSpeed, myRigidBody.velocity.y);
        robotMove = true;
        lastMove = myRigidBody.velocity.x;
        anim.SetFloat ("MoveX", -moveSpeed);
        anim.SetFloat ("LastMoveX", lastMove);
        anim.SetBool ("RobotMoving", robotMove);


    }

    public void moveRight(){



        myRigidBody.velocity = new Vector2 (moveSpeed, myRigidBody.velocity.y);
        robotMove = true;
        lastMove = myRigidBody.velocity.x;
        anim.SetFloat ("MoveX", moveSpeed);
        anim.SetFloat ("LastMoveX", lastMove);
        anim.SetBool ("RobotMoving", robotMove);



    }
    public void stop(){

        robotMove = false;

        anim.SetBool ("RobotMoving", robotMove);

    }

我在左右按钮的eventTrigger On pointerUp上呼叫此停止以停止移动!