1. 程式人生 > 實用技巧 >UE4動畫系統:什麼是動畫通知狀態

UE4動畫系統:什麼是動畫通知狀態

什麼是動畫通知狀態(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:與上一幀的間隔時間

    繫結(註冊)動畫通知狀態

接下來我們就可以在動畫時間軸上新增剛定義的動畫通知狀態,然後我們不僅可以調整它的位置,還可以調整它的長度。之前說過,動畫通知狀態對應的是時間段嘛。