AI行为树,创建AI的新任务需要使用蓝图BBT_Task,task可以有很多个。黑板相当于是存储全局变量的东西,一个行为树必须要有一个黑板。
如果让怪物自行执行命令需要黑板和行为树,还有AIController。AIController可以用来设置执行哪个行为树,行为树里面包含的则是Task。执行行为树方法:Run BehaviorTree。需要在敌人蓝图里的pawn下面将创建的AIController设置进去即可!
AIController和普通的蓝图没多大区别,都有beginplay事件和Tick节点用法也是相同的。增加的新组建一般都会放在这里面。正常来说使用最多的是PawnSensing组件,这个感应组件设置AI的警戒范围。Peripheral Vision Angle目标角度,SlightRadio是视线半径。
每个行为树里面的task还可以添加装饰器:Add Decorator/Blackboard黑板。这里右边会有Blackboard Key是黑板键值是用来调用变量的。Key Query相当于布尔值有两个选项Is Set和Is Not Set,如果选中的黑板键值是已设置的,则会走下面分支,而not则是没有选中的分支。
Observer aborts是观察着终止,比如AI在执行当前行为时发现玩家,如果设置为None则会执行完当前行为树后才会执行发现玩家的行为,如果为self则会立即打断执行发现玩家的行为。
Task里面使用override函数,其中receive abort是接受终止的时候执行,receive execute是接收执行,receive tick就是每帧执行。一般经常使用的是receive execute。在task当前指令结束后需要为task调用Finish Execute指令结束当前任务。否则会一直卡在这里不会执行后续的行为。
Taks里面可以将数值保存起来通过Set Blackboard Value As...这里面有很多类型,根据需要设置对应方法,此方法设置后的Key值需要提升为变量并且设置为全局,这样在行为树里面点击该Task的时候对应的Key的名字就可以设置将任务里的值设置给黑板里面的哪个数值。
行为树里面包含默认的root节点,这是根节点无法删除。由此节点可以延伸出selector和sequence两个节点。其中selector是选择节点,假如有A和B两个执行内容,如果A的内容执行成功则永远不会执行B。而sequence则是执行A后再执行B或者更多,以此循环。
Move to里面acceptable Radio是设置移动到目标相差多少距离。