游戏蛮牛学习群(纯技术交流,不闲聊):159852603
游戏蛮牛 手机端
开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

教程分享

关注:793

当前位置:游戏蛮牛 技术专区 教程分享

查看: 245|回复: 0

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

[复制链接]  [移动端链接]
排名
18687
昨日变化
592

5

主题

33

帖子

97

积分

Rank: 2Rank: 2

UID
153784
好友
1
蛮牛币
349
威望
0
注册时间
2016-6-27
在线时间
29 小时
最后登录
2018-11-18
发表于 2018-11-7 11:27:51 | 显示全部楼层 |阅读模式

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

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

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, 下载次数: 3

售价: 5 蛮牛币  [记录]


回复

使用道具 举报

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

本版积分规则

关闭

站长推荐 上一条 /1 下一条

快速回复 返回顶部 返回列表