我的问题是,当我的角色改变方向时(在向前移动时按下后退按钮),角色首先突然切换到空闲动画,然后才开始向后跑。结果不是平滑的,而是突然的过渡。我还没有找到这个问题的答案。而且,我不知道在同一个混合树中使用空闲和运行是否是正确的方法。
混合树设置的屏幕快照:
还有我的角色移动脚本:
private CharacterController _controller;
private Animator _animator;
private float speed = 5f;
private float xInput;
private float yInput;
private void Start()
{
_controller = GetComponent<CharacterController>();
_animator = GetComponent<Animator>();
}
private void Update()
{
xInput = Input.GetAxis("Horizontal");
yInput = Input.GetAxis("Vertical");
Move();
}
private void Move()
{
float scaledMoveSpeed = speed * Time.deltaTime;
Vector3 moveDirection = transform.right * xInput + transform.forward * yInput;
_animator.SetFloat("Horizontal", moveDirection.x);
_animator.SetFloat("Vertical", moveDirection.z);
_controller.Move(moveDirection * scaledMoveSpeed);
}
1条答案
按热度按时间qzwqbdag1#
**我找到了一个非常明显的答案。**您可以使用
Vector3.SmoothDamp
来生成平滑的输入值(特别是与新的输入系统相关),并将其传递到动画师参数中,这样值就不会突然变为0。