UE4動畫系統:什麼是動畫通知狀態
阿新 • • 發佈:2020-12-29
什麼是動畫通知狀態(Anim Notify State)
先說說名字,動畫通知狀態聽起來好像是一種狀態,但實際上也是一種動畫通知,所以,老王覺得翻譯成“動畫狀態通知”也許更恰當。
如果你理解了老王前面介紹過的動畫通知(見《UE4動畫系統:什麼是動畫通知(Anim Notify)》),那麼動畫通知狀態也不難理解了。二者都是動畫呼叫遊戲邏輯的機制,動畫通知對應動畫時間軸上的一個時間點,而動畫通知狀態對應動畫時間軸上的一個時間段。
使用情景
圖片來源:網頁遊戲http://www.laoshoucun.com/網頁遊戲排行榜
舉個格鬥遊戲的例子吧,假設我們用一個動畫序列表現角色的酷炫超必殺,而角色做這個超必殺時,其攻擊力和防禦力被設計為以某種曲線波動。
在整個釋放必殺技的過程中甚至還有防禦力為零的時刻(這種設計可以讓水平高的玩家在最危險的時刻抓住機會反擊,提高遊戲的刺激感)。要滿足這種需求,使用動畫通知狀態會是一個不錯的選擇。
動畫通知狀態的使用方法
動畫通知狀態,無法像動畫通知那樣直接在動畫時間軸上建立
那咱們就派生一個AnimNotifyState
定義動畫狀態通知
可以override的4個方法
和動畫通知相比,多了Received Notify Begin、Received Notify End以及Received Notify Tick三個方法正好對應著狀態機中每個狀態的常用方法
GetNotifyName:定義了這個動畫通知狀態在時間軸上顯示的名稱。和之前的動畫通知一樣。
本例中我把顯示名設為"My Notify State"
Received Notify Begin:開始播放這個時間段(上面說過,動畫通知狀態對應的是時間段)的動畫時就會觸發這個事件。
- Mesh Comp網格元件物件
- Animation動畫例項物件
- Total Duration:時間段的總時長
Received Notify End:結束播放這個時間段的動畫時就會觸發這個事件。 - Mesh Comp網格元件物件
- Animation動畫例項物件
Received Notify Tick:播放這個時間段的動畫時每一幀都會觸發這個事件 - Mesh Comp:網格元件物件
- Animation:動畫例項物件
- Frame Delta Time:與上一幀的間隔時間
繫結(註冊)動畫通知狀態
接下來我們就可以在動畫時間軸上新增剛定義的動畫通知狀態,然後我們不僅可以調整它的位置,還可以調整它的長度。之前說過,動畫通知狀態對應的是時間段嘛。