ai 行为树

 

根据判断   

           没钱   --  拿钱

没花 

           有钱   --  买花

 

有花    约会

 

这是正常人的逻辑 if 判断, 当转换到ai行为树的时候需要另外处理

先把 总结行为  3个 行为 ,约会, 买花 , 拿钱

然后ai行为树的结点是由子节点的结果来决定,所以   不能在  父节点 判断有没花,此时把条件结点 的逻辑放到子节点去实现

 

没钱

拿钱

 

有钱

买花

 

这样可以合并掉  有钱没钱的结点, 继续合并

没花

没钱

拿钱

 

没花

有钱

买花

此时合并掉   有没花 结点

 

最后用  选择结点放在最外层, 和上图稍微有点不一样

                   没花

                   没钱

                  拿钱

 

                 没花

                 有钱

                 买花

选择结点

 

                 有花

                  约会

 

由于这样判断 逻辑太多重复

所以项目里面增加了  if 的判断  增加选择结点new, 把他放在父节点

 

选择结点new  可以 直接获得  true  和 false 去执行对应的逻辑,当然 选择结点new 的结果依然由子结点来决定

 

当选择有true 和false 的时候 使用选择结点new才有意义

当只有true 没有false 的时候  可以直接使用  原来的行为树概念的选择结点,把  结点放在子节点里面,即上文的图

 

选择结点 和  选择结点new  各有优点,而且可以互相转换

当只有true 没false 建议用旧的

当有true 有false 建议用新的

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

### AI行为树的概念及其实现 #### 行为树的基本概念 行为树是一种用于描述人工智能(AI行为决策的结构化方法,其核心目的是解决有限状态机(Finite State Machine, FSM)在复杂系统中难以维护的问题。它通过树状结构表示AI行为逻辑,其中每个节点代表一种行为或控制逻辑[^1]。这种模块化的结构使得系统的管理和调试变得更加容易。 行为树的关键在于它的节点设计。节点分为多种类型,包括组合节点、装饰器节点、条件节点以及行为节点。每种节点都有特定的功能,在执行过程中会返回三种基本状态:成功、失败或运行中。这些状态决定了整个行为树的执行流程。 --- #### 行为树的实现过程 为了使行为树能够正常工作,必须为其叶节点定义具体的任务功能。这是因为叶节点作为最低级别的节点类型,无法再包含子节点,而是直接负责实现具体的行为逻辑[^4]。以下是行为树实现的主要组成部分: ##### 1. 节点配置 行为树的节点可以通过专门的工具进行配置,例如虚幻引擎中的行为树编辑器。常见的节点及其作用如下: - **选择节点(Selector)**:尝试按顺序执行其子节点,直到某个子节点返回“成功”为止。如果所有子节点均失败,则该节点也返回失败。 - **序列节点(Sequence)**:依次执行其子节点,只有当所有子节点都成功时才返回成功;一旦某子节点失败则立即停止并返回失败。 - **装饰器节点(Decorator)**:对单个子节点施加额外的约束条件,比如检查角色的生命值是否满足某种阈值后再允许执行攻击动作。 - **任务节点(Task)**:定义具体的操作指令,如“移动至指定位置”或“发起攻击”。 上述节点的具体参数可以在编辑器界面中设定,以便精确控制AI行为表现[^3]。 ##### 2. 叶节点的功能定义 即使构建好了整棵行为树,但如果未明确各叶节点的实际任务内容,那么这棵树仍然无法真正发挥作用。因此,开发者需要针对每一个叶节点编写相应的脚本代码来描述预期的动作[^2]。例如,在游戏开发场景下,“执行攻击”的叶节点可能会涉及动画播放、伤害计算等一系列操作。 以下是一个简单的伪代码示例,展示如何在一个叶节点中实现“移动到目标地点”的功能: ```c++ void MoveToTargetLocation() { if (HasValidTarget()) { NavigateTo(TargetPosition); while (!IsAtDestination() && !Interrupted()) { UpdatePath(); } MarkAsSuccess(); // 如果到达目的地,则标记此任务已完成 } else { MarkAsFailure(); // 若无有效目标,则认为任务失败 } } ``` --- #### 行为树的优势 相比传统的FSM模型,行为树具有以下几个显著优点: - **模块化**:由于采用了分层的设计理念,即使是高度复杂的AI行为也可以被拆解成若干独立的小单元处理,从而降低了整体复杂度。 - **可扩展性**:新增或调整某一类行为只需改动对应的节点即可,无需重写大量现有代码。 - **可视化支持**:借助现代游戏引擎提供的图形化编辑环境,设计师可以直接观察和修改AI的工作流图,极大地提高了工作效率。 需要注意的是,虽然行为树非常适合用来规划静态规则下的智能体行动方案,但它本质上仍属于预设型算法范畴,并不依赖于诸如机器学习这样的动态适应机制[^5]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值