狀態機--狀態機3,關於戰鬥中兵種狀態的狀態的結束
阿新 • • 發佈:2019-01-26
戰鬥中的角色有多種狀態,根據不同的事件切換到不同的狀態,進入一個狀態,
當然也會退出狀態,如冰凍狀態,戰鬥中的角色中了冰凍buff後進入冰凍狀態,
那麼當這個冰凍buff時間到了之後自然就失效了,角色要解除冰凍狀態,那麼
解除了冰凍狀態後要進入哪個狀態呢,這個具體看需求,一般情況下是進入到
待機狀態,通俗地說,當冰凍buff生效時呼叫onFrozen(),當冰凍buff失效時
呼叫onFrozenEnd(),程式碼如下:
local StateId = require("app.edition4.StateId") local Soldier = class("Soldier") function Soldier:ctor() self.iStateId = StateId.unKnown end --待機 function Soldier:onIdle() self.iStateId = StateId.idle print("切換到待機狀態") end --行走 function Soldier:onWalk() if self:isFrozen() then return end self.iStateId = StateId.walk print("切換到行走狀態") end --攻擊 function Soldier:onAttack() if self:isFrozen() then return end self.iStateId = StateId.attack print("切換到攻擊狀態") end --冰凍 function Soldier:onFrozen() if self:isFrozen() then return end self.iStateId = StateId.frozen print("切換到冰凍狀態") end --冰凍結束,預設切換為待機狀態 function Soldier:onFrozenEnd() print("冰凍狀態結束") self:onIdle() end function Soldier:isFrozen() return self.iStateId == StateId.frozen end return Soldier