找回密码
 注册帐号

扫一扫,访问微社区

自学总结 带撤销的无限状态机-lua篇

0
回复
696
查看
打印 上一主题 下一主题
[ 复制链接 ]
2初来乍到
103/150
排名
18789
昨日变化

5

主题

34

帖子

103

积分

Rank: 2Rank: 2

UID
153784
好友
2
蛮牛币
364
威望
0
注册时间
2016-6-27
在线时间
32 小时
最后登录
2019-1-27

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x

核心就一个FSM(状态机),一个FSMState(状态)。
每个状态可以有一个父状态和无限个子状态。
具体实现可以参考下面代码
附件中有完整的源码
require("FSM")
require("FSMState")

local fsm = FSM:New("fsmName")

local idleState = FSMState:New("idle")
local moveState = FSMState:New("move")
local attackState = FSMState:New("attack")

idleState:BindAction(nil, function(dt)
        print("idle  update  " .. tostring(dt))
end, function()
    print("idle leave")
end)

moveState:BindAction(function()
    print("move  enter")
end, function(dt)
    print("move update   " .. tostring(dt))
end)

attackState:BindAction(function()
    print("attack  enter")
end, function(dt)
    print("attack update   " .. tostring(dt))
end)



fsm:AddState(idleState)
fsm:AddState(moveState)
fsm:AddState(attackState)

fsm:Begin(idleState)

local index = 0

while(true) do
    fsm:OnUpdate(0.02)

    index = index + 1

    if index > 3 then
        print("break")
        break
    end
end

fsm:SetState(attackState)
fsm:SetState(moveState)

fsm:GoBackState()












LuaFSM.zip

2.76 KB, 下载次数: 6

售价: 5 蛮牛币  [记录]

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则