functionplayer:addstatemachine () self.fsm_={} cc. Gameobject.extend (self.fsm_): AddComponent ("Components.behavior.StateMachine"): Exportmethods () self.fsm_:setupState ({--Initial StateInitial ="Idle", --event and state transitionsEvents = { --T1:clickscreen, T2:clickenemy, t3:bekilled, T4:stop{name ="Clickscreen", from = {"Idle","Attack"}, to ="Walk"}, {name="Clickenemy", from = {"Idle","Walk"}, to ="Attack"}, {name="bekilled", from = {"Idle","Walk","Attack"," Hit"}, to ="dead"}, {name="Behit", from = {"Idle","Walk","Attack"}, to =" Hit"}, {name="Stop", from = {"Walk","Attack"," Hit"}, to ="Idle"}, }, --callbacks after a state transitionCallbacks ={OnIdle=function(event) Self:idle ()End, Onattack=function(event) Self:attackenemy ()End, Onhit=function(event) Self:hit ()End, Ondead=function(event) Self:dead ()End }, })End
Then I send a clickscene event that determines the walk state if it is an idle attack statejust like if else, the system helped you write the if else.
State migration driven by events
Quick State Machine StateMachine