我目前有两个动画状态: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);
}
}
评论 (0)