当前位置: 首页 > news >正文

状态机-–-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

http://www.jsqmd.com/news/107755/

相关文章:

  • AI训练能效革命:从45分钟到3分钟的技术演进与行业影响
  • MOS 管栅极的 “充放电控制 + 可靠性
  • 终极免费抽奖神器:Magpie-LuckyDraw全平台部署指南
  • 终极免费解锁付费内容限制:Chrome扩展完整使用指南
  • Grafana MCP集成终极指南:5个快速提升监控效率的技巧
  • 选择监测节点-–-behaviac
  • OBS多平台直播终极指南:从入门到精通的完整方案
  • 5-Nitroindole Amidite,5-硝基吲哚核苷酸酰胺化试剂(5-硝基吲哚 Amidite)
  • 条件执行节点-–-behaviac
  • 哔哩下载姬DownKyi完整教程:从入门到精通的8大核心技巧
  • 5-FAM,单一异构体,5-Carboxyfluorescein, 5-FAM, 单一异构体
  • Langfuse
  • 技术人才职业发展:从工具思维到价值创造的成长阶梯
  • Quasar 705 T Amidite,Quasar 705 T 核苷酸酰胺化试剂,化学特性
  • 百度贴吧用户脚本终极指南:告别繁琐操作,体验贴吧新境界
  • BTQ-2 dT Linker Amidite,BTQ-2 胸腺嘧啶链节核苷酸酰胺化试剂,化学性质
  • 5‘-Thiol Modifier C6 S-S Amidite,5‘-硫醇修饰剂 C6 双硫键核苷酸酰胺化试剂
  • Unity RestClient 终极指南:告别回调地狱的异步网络编程
  • 微服务架构设计 - 分布式锁使用方法论
  • 驱动开发系列74 - GPU中的I2C
  • libgit2跨平台构建终极指南:从源码到生产部署的完整实践
  • 思考与练习之答案与解析(第六章 程序控制结构)
  • 告别腾讯游戏卡顿:sguard_limit资源限制器完整使用指南
  • TNN人脸识别模型
  • 【源码解读之 Mybatis】【核心篇】--第5篇:Executor执行器体系详解
  • 思考与练习之答案与解析(第五章 基本数据类型)
  • 论文分享|重新思考循环神经网络与图像分类的改进(Rethinking Recurrent Neural Networks and Other Improvements for Image Class)
  • DeepPavlov对话系统监控指南:从零搭建智能运维体系
  • Python金融数据获取完整指南:高效实用的量化分析利器
  • 终极3D创作革命:Stable-Dreamfusion让每个人都能轻松制作专业级3D模型