经过前面的文章,已经把行为树中的四种基本类型节点介绍了下.接下来可以整理一下,打印一下整棵行为树.注意点如下: 1.可以把BTBehaviorTree也当作一种节点,这样就可以方便地进行行为树嵌套了 2.可以在BTBehaviorTree中的SetStartTask.BTParentTask中的AddChild,即在设置节点和添加节点时对节点的信息进行打印 以下面这棵行为树为例: BTTask.lua BTTask = {}; local this = BTTask; function this…
在上一篇的基础上,可以测试下行为树的嵌套,所谓的行为树嵌套,就是在一棵行为树下的某一个分支,接入另一棵行为树. 以下面这棵行为树为例: TestBehaviorTree2.lua TestBehaviorTree2 = BTBehaviorTree:New(); local this = TestBehaviorTree2; this.name = "TestBehaviorTree2"; function this:New() local o = {}; setmetatable(o…
先看一下之前的条件节点是怎么设计的: BTConditional.lua BTConditional = BTTask:New(); local this = BTConditional; this.taskType = BTTaskType.Conditional; function this:New() local o = {}; setmetatable(o, self); self.__index = self; return o; end BTIsNullOrEmpty.lua --[…
先看一下之前的行为节点是怎么设计的: BTAction.lua BTAction = BTTask:New(); local this = BTAction; this.taskType = BTTaskType.Action; function this:New() local o = {}; setmetatable(o, self); self.__index = self; return o; end BTLog.lua --[[ 参考BehaviorDesigner-Action-Lo…
条件节点和行为节点,这两种节点本身的设计比较简单,项目中编写行为树节点一般就是扩展这两种节点,而Decorator和Composite节点只需要使用内置的就足够了. 它们的继承关系如下: Conditional->Task Action->Task 代码如下: BTAction.lua BTAction = BTTask:New(); local this = BTAction; function this:New() local o = {}; setmetatable(o, self);…