UE4:行为树切换、条件判断、task返回

一、行为树切换

在UE4的AI系统中,如果需要指定ai使用的行为树,可以在aicontrol中通过run behavior tree节点启动

UE4:行为树切换、条件判断、task返回_第1张图片

但有时候,我们需要在行为树中运行另一个行为树,如吃饭的时候,碰到其他人,需要聊天。

如果直接用aicontrol切换行为树,那么会导致,我聊天完切换回吃饭,要从头执行,即从头开始吃饭。这样显然是不方便的,因此,可以使用行为树中的run behavior节点

 

需要注意,通过此种方法切换行为树,新的行为树相当于作为一个子树,替代了原行为树中的Run behavior节点。当该子树执行完之后,则会去执行原行为树接下来的节点,而不是重新运行子行为树。

另外一点需要注意的是,子行为树与原行为树需要用同一种黑板,才能切换成功

二、条件判断

在行为树中,有时候需要添加条件判断,此时可以用blackboard based condition修饰器来作为分支,需要注意的是,如果使用变量是对象,则会检测对象是否被设置过,如果是bool变量,则is set和is not set分别代表True和False



但需要注意,此时添加了该装饰器的节点会返回失败值,如果上层是sequence并且想继续执行后续节点,则可以另外加一个force success装饰器

UE4:行为树切换、条件判断、task返回_第2张图片

三、Task返回的坑

在行为树的task中,如果调用Finish execute节点,并不会立刻结束任务并返回

UE4:行为树切换、条件判断、task返回_第3张图片
例如在loop中,某次循环调用了finish execute,并不会在这次循环时返回,而是会仍然执行到completed引脚之后的内容

 

你可能感兴趣的:(游戏开发)