public Animator anim; private AnimatorStateInfo animInfo; /// <summary> /// 控制動畫暫停和播放 /// </summary> int playSpeed = 0; void Update() { animInfo = anim.GetCurrentAnimatorStateInfo(0); //判斷正在播放Take 001動畫 if (animInfo.normalizedTime < 0.99f && animInfo.IsName("Take 001")) { //第一段動畫 if (animInfo.normalizedTime > 0.19 && animInfo.normalizedTime < 0.2) { //達到條件時暫停播放動畫 print("暫停播放1"); anim.speed = playSpeed; } //第二段動畫 else if (animInfo.normalizedTime > 0.39 && animInfo.normalizedTime < 0.4) { print("暫停播放2"); anim.speed = playSpeed; } else { //自動設置回中止播放條件 playSpeed = 0; } } } /// <summary> /// 開始播放動畫 /// </summary> private void PlayAnim() { //設置播放動畫條件 playSpeed = 1; }
animInfo.normalizedTime 動畫狀態標準化時間,一段動畫值爲從0~1。到1則動畫播放完畢動畫
animInfo.IsName("Take 001") 當前播放的動畫,Take 001是動畫名稱code
原理:首先要知道每段動畫結束幀,而後該段動畫結束幀除於總幀獲得該結束幀在animInfo.normalizedTime 的值,最後做爲條件暫停動畫,繼續播放動畫可實現下一段動畫的啓停。orm
好比:有一個動畫100幀,不剪輯,須要播放多段動畫。class
得知第一段的結束幀在20幀,那麼20/100=0.2,0.2則爲normalizedTime 值做爲動畫暫停條件(寫條件的時候能夠設個範圍)。原理