1.为什么使用BT
FSM模型的优势之一是简单。但是FSMs需要用转换(Transition)连接状态(State),因此,状态(State)失去了模块性(Modularity)。
BT的主要优势之一就是其更好的封装性和模块性,让游戏逻辑更直观,开发者不会被那些复杂的连线绕晕。
FSM
BT
行为树的基本概念:
- 执行每个节点都会有一个结果(成功,失败或运行)
- 子节点的执行结果由其父节点控制和管理
- 返回运行结果的节点被视作处于运行状态,处于运行状态的节点将被持续执行一直到其返回结束(成功或失败)。在其结束前,其父节点不会把控制转移到后续节点。
大致分为四类:行为( action), 条件(conditional), 装饰(decorator), 组合(composite)
其中 [行为], [条件] 为子节点; [装饰], [组合]为父节点
行为节点:子节点,执行具体动作,必定返回成功,比如:赋值,输出日志
条件节点:子节点,执行具体动作,返回具体执行结果,比较复杂的行为:寻找敌人,检查buff等等
装饰节点:父节点,更具子节点的返回值,决定自身的返回值,装饰子节点的返回值,比如: 逆变(Inverter),重复(Repeater)等
组合节点:父节点,组合控制节点, 根据子节点的返回值决定自身的返回值,以及子节点调用顺序,常用的控制节点有以下三种:
选择(Selector): 选择其子节点的某一个执行(顺序,无序,权重),第一个子节点返回成功后结束,返回成功,一个子节点都没有成功,返回失败
序列(Sequence): 将其所有子节点依次执行,也就是说当前一个返回“完成”状态后,再运行先一个子节点,全部子节点成功执行返回成功,某一子节点失败后立即退出,返回失败
并行(Parallel): 将其所有子节点都运行一遍,返回和中断可配置
附件列表