news 2026/4/3 4:29:16

状态机-–-behaviac

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
状态机-–-behaviac

原文

简介

behaviac组件不仅支持行为树,也支持有限状态机(FSM),并且支持行为树跟状态机的相互嵌套调用。

behaviac组件中的状态机主要用到了状态(State)、等待状态(WaitState)和等待帧数状态(WaitFramesState)三种节点,以及条件转换(Transition)和总是转换(AlwaysTransition)两种附件,如下图所示:

图1 状态机相关节点和附件

状态节点

状态节点(State)是状态机中的基本组成部分之一,可以在状态节点上添加前置、后置以及转换等附件,如下图所示:

图2 状态节点

  • 在状态节点上添加的前置:表明进入该状态节点时,需要执行的操作。
  • 在状态节点上添加的后置:表明退出该状态节点时,需要执行的操作。
  • 在状态节点上添加的转换:表明满足该转换所表示的条件时,由当前状态切换到转换所指向的下一个状态。

如下图所示,可以编辑状态节点的相关属性:

图3 状态节点的属性

  • 名字:为状态节点指定一个有意义的名字,以便区分其他状态节点。
  • 方法:表示该状态节点需要执行的操作。
  • 结束状态:如果勾选,表示该状态作为结束状态,即在执行完该状态节点之后,整个状态机也直接结束。该节点形状也将显示为圆角矩形(RoundRectangle),以示区别。

具体的执行逻辑可以查看fsm/fsmstate.cpp

等待状态节点

等待状态节点(WaitState)是一种特殊的状态节点,可以在状态节点上添加前置、后置以及等待转换等附件,如下图所示:

图4 等待状态节点

添加等待状态节点时,会自动的生成唯一的等待转换附件,不接受添加其他类型的转换附件。

如下图所示,可以编辑等待状态节点的相关属性:

图5 等待状态节点的属性

相比状态节点的属性,等待状态节点少了“方法”属性,但多出了一个“持续时间”属性,用来指定需要等待多长时间,可以是常数、属性或方法的返回值。

具体的执行逻辑可以查看fsm/waitstate.cpp

等待帧数状态节点

等待帧数状态节点(WaitFramesState)也是一种特殊的状态节点,可以在状态节点上添加前置、后置以及等待转换等附件,如下图所示:

图6 等待帧数状态节点

添加等待帧数状态节点时,会自动的生成唯一的等待转换附件,不接受添加其他类型的转换附件。

如下图所示,可以编辑等待帧数状态节点的相关属性:

图7 等待帧数状态节点的属性

相比状态节点的属性,等待帧数状态节点少了“方法”属性,但多出了一个“帧数”属性,用来指定需要等待多少帧数,可以是常数、属性或方法的返回值。

具体的执行逻辑可以查看fsm/waitframesstate.cpp

条件转换附件

转换附件(Transition)是状态机中的基本组成部分之一,它表示一个条件,当这个条件满足时,由所在的状态切换到另一个状态,如下图所示:

图8 转换附件

如下图所示,类似条件节点来编辑转换附件的相关属性:

图9 转换附件的属性

此外,在上图中有个“效果”的属性,是转换附件执行完之后需要执行的额外操作。

具体的执行逻辑可以查看fsm/startcondition.cpp

状态转换附件

状态转换附件(StatusTransition)是一种特殊的转换附件,根据它的配置,转换时机会有不同:

  1. 总跳转,表示无条件从所在的状态切换到另一个状态,如下图所示
  2. 成功时,表示当所在节点是子树并且成功的时候转换
  3. 失败时,表示当所在节点是子树并且失败的时候转换
  4. 结束时,表示当所在节点是子树并且结束(成功或失败)的时候转换

图10 状态转换附件

具体的执行逻辑可以查看fsm/alwaystransition.cpp

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/12 0:05:44

局域网文件共享

chfs:全称Cute HTTP File Server,名字很长,一般叫法“小型文件服务器” http://iscute.cn/chfshttp://iscute.cn/chfs 下载后,解压缩后,双击运行 chfsgui.exe 浏览器访问Website地址 可以上传文件或文件夹&#xff0…

作者头像 李华
网站建设 2026/3/28 5:29:44

【源码解读之 Mybatis】【核心篇】--第5篇:Executor执行器体系详解

5篇:Executor执行器体系详解1. 学习目标确认1.0 第4篇思考题解答在深入学习Executor执行器体系之前,让我们先回顾并解答第4篇中提出的思考题,这将帮助我们更好地理解Executor在整个架构中的作用。思考题1:为什么MyBatis选择JDK动态…

作者头像 李华
网站建设 2026/3/31 16:00:07

收到工资1002415.13元,爱你华为!!!

最近一华为员工收到100k月薪,在网上感谢公司,引起大批网友羡慕。那么。未来10年,什么领域的职业发展潜力最大?答案只有一个:人工智能。今年找工作彷佛进入地狱模式,一边是投出上百份简历却石沉大海&#xf…

作者头像 李华
网站建设 2026/4/3 3:07:56

终极B站视频下载工具:专业级高效下载与处理完整指南

终极B站视频下载工具:专业级高效下载与处理完整指南 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去水印等&#xf…

作者头像 李华
网站建设 2026/3/22 2:50:24

Chrome密码恢复工具:开源方案实战指南

Chrome密码恢复工具:开源方案实战指南 【免费下载链接】chromepass Get all passwords stored by Chrome on WINDOWS. 项目地址: https://gitcode.com/gh_mirrors/chr/chromepass 你是否曾因忘记某个重要网站的登录密码而苦恼?Chrome浏览器虽然贴…

作者头像 李华