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