--[[
状态机
602809934@qq.com
Sample:
local MaxFPSTimer = 0.016
local STATE_IDLE = 0
local STATE_WALK = 1
local STATE_RUN = 2
local STATE_IN_COMBAT = 3
local STATE_DYING = 20
...
local Player = player:create()
Player.onEnterIdle = function(currPlr)
currPlr.__isInCombat = false
...
end
Player.onExecuteIde = function(currPlr, TimeDiff)
for k, v in pairs(enemy) do
if (currPlr:MoveInLineOfSight(v) == ENGAGE_COMBAT) then
currPlr:EngageWith(v)
currPlr.sm:setNextState(Player:IsInAttackRange(v) and STATE_IN_COMBAT or STATE_RUN)
currPlr.__isInCombat = true
break
end
end
...
end
Player.onExitIdle = function(currPlr)
if currPlr.__isInCombat then
currPlr:TryShowWeapon()
end
...
end
...
Player:CleanupAndDelete()
self.sm = nil
end
local sm = StateMechine:new()
sm:addState(STATE_IDL
Lua 实现状态机
最新推荐文章于 2024-07-16 20:29:03 发布
本文深入探讨了如何使用Lua编程语言来设计和实现状态机。通过实例代码,阐述了Lua中定义状态、转换条件以及状态间切换的方法,同时讨论了状态机在游戏开发和系统控制等领域的应用。
摘要由CSDN通过智能技术生成