我的动画是滞后的,为什么?

时间:2016-05-16 23:13:46

标签: animation unity3d unityscript

我有一个统一的动画,基本上它显示了唐纳德特朗普的运行:

enter image description here

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

enter image description here

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

enter image description here

这一切都有效,而且这段代码运行它:

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

物理脚本中的那个。然后从动画师那里:

enter image description here enter image description here

这一切都有效,动画会在应有的时候发生变化。问题是,它在完成之前就滞后了。我认为当特朗普跳跃时,步行动画在切换到跳跃动画之前就完成了。我的问题是,如何立即自动切换动画,所以它看起来不那么迟钝?

1 个答案:

答案 0 :(得分:1)

您可以立即调用Jump动画,以便在您使JumpBool = true时播放。这样做你不需要等待步行动画完成,它只会停止Walk并移动到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);    

enter image description here

你甚至不需要设置bool,在Jump动画结束后它会回到Walk动画。

enter image description here