在角色踢腿達到最高時執行一個操作及在子彈接連幾次集中統一個敵人時,敵人能即時重播受傷動畫

一.先說第一個問題。
問題:有時我們需要控制在角色播放動畫的某一刻去執行某些操作,例如在主角揮刀到水平位置時,要創建一個揮刀特效。當角色踢腿達到最高時,要執行一下其他的操作等等
分析:這主要是控制動畫的執行過程,找到能控制動畫播放的屬性,同時查看動畫播放到指定動作的時間,就可以執行上面要求的操作。
解決:我測試了當角色踢腿到最高位置時打印一次“檢測成功語句”;
在AnimatorStateInfo中有一個NormalizedTime屬性,它記錄着某一個動畫狀態單元在開始執行到當前位置的百分比。如果這個動畫單元是循環播放或是在播放完時保持狀態不切換,此時NormaliezdTime的值會大於1.使用該屬性乘以動畫的總幀數,那麼就會得出此時動畫走到了哪一幀,這樣跟預先設置好的動畫幀進行比較,大於該值時就認爲退踢到了最高處,此時打印“檢測成功語句”;
如圖一:
在這裏插入圖片描述

下面是腳本代碼:
在這裏插入圖片描述
出了上述的主要過程意外其他的參數是爲了實現更好的調試效果,而不是必要的。
動畫狀態機的模式爲:
在這裏插入圖片描述

執行結果爲:
在這裏插入圖片描述

二.
問題:射擊類遊戲中,向一個敵人連續多次地射擊,動畫卻每次總是將受傷動畫播放完才重新開頭播放,這樣導致效果很不好,我希望的是,敵人在收到下一次的射擊時能夠立刻,結束當前的動畫播放,而從頭開始播放。
分析:一個動畫正在播放是沒有辦法讓他停止而再去重播,,所以不能再一個動畫單元上下功夫。
解決:在動畫控制器中創建兩個受傷動畫單元,hurt1,hurt2,再設置一個int型的參數count,使他自增。規定當count爲奇數時播放hurt1,當count爲偶數時爲hurt2,取消動畫切換時的has exit time屬性,這樣在兩個動畫單元間就可以實現立刻切換的效果。
因爲思路比較簡單就不再拉入demo了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章