1. 程式人生 > >Unity中協程裡Animator獲取狀態一些筆記

Unity中協程裡Animator獲取狀態一些筆記

最近用Animator獲取狀態各種獲取錯誤,所以記一下筆記 Animator中可以獲取三種不同的狀態:

GetCurrentAnimatorStateInfo 獲取正確的狀態機狀態 GetNextAnimatorStateInfo 獲取下一個狀態機的狀態 GetAnimatorTransitionInfo 獲取狀態機的過渡狀態

動畫同步是在幀最前,而協程是在幀的最後呼叫。所以切換狀態後在協程獲取狀態機狀態要yield return null在獲取。

下面分開有過渡狀態和沒過渡狀態的狀態機來說:

如果狀態機有過渡的狀態的話(A—》B),切換後 GetCurrentAnimatorStateInfo

仍會獲取切換前的狀態 (A) GetNextAnimatorStateInfo 會獲取切換後的狀態(B) 並且此時GetAnimatorTransitionInfo 可以獲得過渡狀態 切換完畢後GetAnimatorTransitionInfo 會返回一個null 通過normalizedTime計算動畫播放時間時候,處於過渡狀態下,仍會進行下一個狀態的動畫, 所以過渡狀態後獲取的正確的GetCurrentAnimatorStateInfo (B狀態)的normalizedTime不是從0開始而是根據過渡狀態下經過的時間開始的

如果狀態機沒過渡狀態的話(A—》B),切換後 GetCurrentAnimatorStateInfo

會獲得切換後的狀態(B) GetAnimatorTransitionInfo 會返回一個null 這是通過GetCurrentAnimatorStateInfo(B狀態)獲取的normalizedTime則是從0開始

如果動畫是可以迴圈的話,貌似下一次該狀態的normalizedTime不會歸0(?)