unity3d 我怎样才能使混合树中的动画平滑?

nukf8bse  于 2022-11-25  发布在  其他
关注(0)|答案(1)|浏览(160)

我的问题是,当我的角色改变方向时(在向前移动时按下后退按钮),角色首先突然切换到空闲动画,然后才开始向后跑。结果不是平滑的,而是突然的过渡。我还没有找到这个问题的答案。而且,我不知道在同一个混合树中使用空闲和运行是否是正确的方法。
混合树设置的屏幕快照:

还有我的角色移动脚本:

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);
}
qzwqbdag

qzwqbdag1#

**我找到了一个非常明显的答案。**您可以使用Vector3.SmoothDamp来生成平滑的输入值(特别是与新的输入系统相关),并将其传递到动画师参数中,这样值就不会突然变为0。

相关问题