我试图在Unity中为战士制作动画。我创建了一个有限状态机,如下图所示。有三个转换参数:btn_walking,btn_jumping和btn_attacking。当用户持有密钥w时,btn_walking参数设置为true,当密钥j和a分别保持时,btn_jumping和btn_attacking也会发生相同的情况。
但是,当游戏启动时,即使按下按键w,j和a,战士仍保持在player_iddle状态。我是Unity的小伙子,可能我犯了一些错误。
给战士(GameObject player_sprite)注意以下脚本(player.cs):
公共班级选手:MonoBehaviour {
private Animator animator;
bool btn_walking = false;
bool btn_jumping = false;
bool btn_attacking = false;
// Use this for initialization
void Start () {
animator = this.GetComponent<Animator>();
}
// Update is called once per frame
void update() {
btn_walking = false;
btn_jumping = false;
btn_attacking = false;
if(Input.GetKey(KeyCode.W)){
btn_walking = true;
Debug.Log ("clicked on W");
}
if(Input.GetKey(KeyCode.J)){
btn_jumping = true;
Debug.Log ("clicked on J");
}
if(Input.GetKey(KeyCode.A)){
btn_attacking = true;
Debug.Log ("clicked on A");
}
animator.SetBool("btn_walking", btn_walking);
animator.SetBool("btn_jumping", btn_jumping);
animator.SetBool("btn_attacking", btn_attacking);
}
}
我也在看我的Unity项目。有人会举手吗?当用户按住某个键时,如何让战士改变其动画状态?
谢谢!