我正在我的播放器上移动动画,代码如下:
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);
如上所示,控件是轴控件(键盘)。
但是我希望这些动画能够在我在屏幕上创建的控制按钮上运行!
我有这两个按钮,如图所示:
我正在使用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);
}
现在就像轴控制一样,玩家移动到一定距离(如果我继续按住,则不会连续)但是在轴上工作的动画不在这些按钮中工作!
任何人都能说出它为什么会发生?
答案 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
上呼叫此停止以停止移动!