我的动画滞后,为什么?

My animation is lagging, why?

我在unity中有一个动画,基本上是唐纳德特朗普 运行:

我也有这张特朗普跳跃的一帧动画:

基本上,当他跳跃时,跳跃动画播放,当他落地时,步行动画再次播放。

一切正常,这段代码运行它:

function Update() {
    trump.velocity = Vector2(speed, trump.velocity.y);
    if (jump > 0) {
        jumpBool = true;
    }
    else {
        jumpBool = false;
    }
    animator.SetBool("Jump", jumpBool);

那是在物理脚本中。然后来自动画师:

一切正常,动画会按预期更改。问题是,它在完成之前就滞后了。我认为当特朗普跳跃时,步行动画会在切换到跳跃动画之前完成。我的问题是,如何立即自动切换动画,才不会显得那么卡?

您可以在设置 JumpBool = true 时立即调用要播放的 Jump 动画。这样做你不需要等待步行动画完成,它会简单地停止步行并移动到跳跃。

function Update() {
    trump.velocity = Vector2(speed, trump.velocity.y);
    if (jump > 0) {
        animator.Play("Trump Jump");
        //jumpBool = true;
    }
    else {
        //jumpBool = false;
    }
    //animator.SetBool("Jump", jumpBool);    

你甚至不需要设置布尔值,跳跃动画完成后它会回到行走动画。