方法一(強力推薦):
在動畫結束幀或其他幀處加個動畫事件,在播放到這一幀的時候會自動調用這個動畫函數
如圖,找到對應動畫的inspector面板,在里面有個Events下拉條,下拉后在想要的幀的位置添加事件函數,函數名字自己取,並且記得在使用這個動畫的物體下面掛載的腳本里面寫好這個函數的實現代碼,object關聯這個寫了事件函數的腳本。
如:Function:attackhalfevent
Object:enemy.cs
在敵人節點下的enemy腳本里面添加函數
public void attackhalfevent() { Debug.Log("event message: attck half!"); }
方法二(道聽途說):
試試animator上面那個 exit time
方法三(有時有用):
使用動畫狀態的歸一化時間判斷,注意,這個方法一般是用來做動畫的切換,不能寫一些邏輯語句在動畫播放完成后執行,因為我測試過,一個動畫播放完成后,會調用二十幾次if里面的語句。
void Update () { AnimatorStateInfo info = anim.GetCurrentAnimatorStateInfo(0); // 判斷動畫是否播放完成 if (info.normalizedTime >= 1.0f && info.IsName("Base Layer.hurt"))//當前hurt動畫是否播放完成,完成調用下面語句 { this.anim.SetInteger("anim_state", 0);//設置參數anim_state的值為0,我們之前也設置了當它等於0的時候會跳轉 } }