36. 人物動畫

hellozjf發表於2024-03-09

人物動畫狀態機

設定變數

isParry	是否在防禦
isSleep	是否正在睡覺
isDead	是否已經死亡
attack	攻擊
hit		受傷
skill	技能

狀態

stand			站立
parry_stand		防禦
hurt			受傷
attack_pillow	攻擊
sleep			睡眠
wake			醒來
skill			技能
death			死亡

狀態切換

站立狀態可以切換到防禦、攻擊、睡眠、技能

防禦狀態可以切換到站立、受傷、死亡

受傷狀態可以切換到防禦、睡眠

攻擊狀態可以切換到站立

睡眠狀態可以切換到受傷、醒來、死亡

醒來狀態可以切換到站立

技能狀態可以切換到站立

變數與狀態切換

站立 -> 防禦

isParry = true

站立 -> 攻擊

觸發 attack

站立 -> 睡眠

isSleep = true

站立 -> 技能

觸發 skill

防禦 -> 站立

isParry = false

防禦 -> 受傷

觸發 hurt

防禦 -> 死亡

isDead = true

受傷 -> 防禦

isParry = true,要完整播放完受傷動畫

受傷 -> 睡眠

isSleep = true,要完整播放完受傷動畫

攻擊 -> 站立

播放完動畫就能回到站立狀態

睡眠 -> 受傷

觸發 hit

睡眠 -> 醒來

isSleep = false

醒來 -> 站立

播完動畫

技能 -> 站立

程式碼控制

新增PlayerAnimation,並把它繫結到 Player 上面

預設情況下進入 sleep 狀態

玩家回合開始進入 stand 狀態

玩家回合結束根據防禦值進入不同狀態

如果防禦值大於0,則進入防禦狀態,否則進入睡眠狀態

玩家攻擊和技能動畫

監聽狀態呼叫相應方法

在回合開始的事件中呼叫 PlayerTurnBeginAnimation

在回合結束的事件中呼叫 PlayerTurnEndAnimation

在丟棄了卡牌的時候呼叫 OnPlayerCardEvent(這裡有點問題,如果我實現了一個棄牌邏輯,那麼棄牌豈不是也要播放動畫了?

專案相關程式碼

程式碼倉庫:https://gitee.com/nbda1121440/DreamOfTheKingdom.git

標籤:20240309_1240

相關文章