我目前有两个动画状态:idle(空闲)和walk(走路)。当角色停止移动时,会播放一个小的idle动画。idle动画正常工作,但是走路动画却没有播放。idle状态下,当我按下播放按钮时,蓝条会显示,但是走路状态下不会。另外,idle动画在角色移动时也会播放,而不是只有在角色不移动时才播放。

我检查了变量名(isMoving,LastInputX等),它们都匹配了。过渡持续时间已经设置为0,退出时间是未选中状态。条件(isMoving=true/false)也是正确的。

using UnityEngine;
using UnityEngine.InputSystem;

public class PlayerMove : MonoBehaviour
{
    [SerializeField]
    private float moveSpeed = 5f;
    private Rigidbody2D rb;
    private Vector2 moveInput;
    private Animator animator;

    // Start 是在 MonoBehaviour 创建后第一次执行 Update 前被调用
    void Start()
    {
        rb = GetComponent<Rigidbody2D>();
        animator = GetComponent<Animator>();
    }

    // FixedUpdate 每帧被调用
    void FixedUpdate()
    {
        rb.linearVelocity = moveInput * moveSpeed;
    }

    // Move 是一个 InputAction.CallbackContext 回调函数
    public void Move(InputAction.CallbackContext context)
    {
        animator.SetBool("isWalking", true);
        if (context.canceled)
        {
            animator.SetBool("isWalking", false);
            animator.SetFloat("LastInputX", moveInput.x);
            animator.SetFloat("LastInputY", moveInput.y);
        }
        moveInput = context.ReadValue<Vector2>();
        animator.SetFloat("InputX", moveInput.x);
        animator.SetFloat("InputY", moveInput.y);
    }
}