unity Animator如何判断当前动画有没有播放完成


如何判断animator播放某一个动画播放完毕

 
 
//playAnimationName 将要播放动画的名字    animationTime 播放到某一时刻(0 - 1)   action回掉
//enemyAnimator.GetCurrentAnimatorStateInfo(0).normalizedTime 当返回的值大于1的时候该动画已经播放完毕
public IEnumerator PlayAnimation(string playAnimationName, float animationTime, System.Action action)
{
    SetPlayAnimation(playAnimationName, true);
    while (!enemyAnimator.GetCurrentAnimatorStateInfo(0).IsName(playAnimationName))
    {
        yield return null;
    }
    while (enemyAnimator.GetCurrentAnimatorStateInfo(0).normalizedTime < animationTime)
    {
        yield return null;
    }
    //Debug.Log("播放完毕");
    SetPlayAnimation(playAnimationName, false);
    action?.Invoke();
}

       

 

 

 

分析:

//为什么我会先判断animator是否进入我们想要播放的动画 比如我们想播放attack这个动画 但是当它在idle转向attack的时候 animator会有一个动画融合
//当开始播放attack动画的时候他不会立即进入而是回在idle -> attack的过程中 而返回的名字仍然是idle 所以要判断是否进入attack动画
while
(!enemyAnimator.GetCurrentAnimatorStateInfo(0).IsName(playAnimationName)) { yield return null; }


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM