1.前言
在制作游戏时,会制作敌人、怪物、NPC等不被玩家所操作的对象,那么制作这些对象,就需要通过使用AI行为树来为他们编写各自的一些行为逻辑,比如敌人会寻找主角并攻击、怪物会在自己的领域巡逻等等。
2.组件说明
- NavMeshBoundsVolume:导航网格体边界体积,用作导航寻路,会自动计算可到达的位置,避开障碍物,可在项目设置中设置静态计算还是动态计算,动态计算是在运行过程中实时计算的,比较耗费性能,一般情况就使用静态。
- AIController:AI的控制类,可添加AI的一些感知组件、视力感知、听力感知等等。通过感知组件,可以做很多不同的行为,需要在AI中设置编写好的AIController
- BlackBoardData:黑板,设置一些行为树用到的成员数据
- BehavirTree:行为树,编写AI行为,需要在AIController中运行写好的行为树(绑定)。树的结构,从根开始往下执行,执行顺序是从上到下,从左到右
- Composites:合成器节点
- Selector:选择器合成节点。从左到右执行子项,如果其中一个子项执行成功则终止,如果子项成功,则选择器成功,如果全部失败,则失败
- Sequence:序列合成节点。从左到右执行子项,其中一个子项执行失败则序列失败,停止执行。序列的全部子节点执行成功,序列成功
- Simple Parallel:并行执行任务节点
- Decorator:装饰器,相当于条件判断,通过给合成器添加不同的条件,来确定是否执行该合成器
- Task:任务,也是行为树的叶子节点,具体的行为逻辑,在执行完一个任务之后,需要给任务标记完成执行
- Composites:合成器节点
3.简单的AI例子
使用UE4的TPS示例进行制作,做一个AI在地图中随机移动,看到玩家后朝玩家移动
- 创建导航网格体边界体积
- 在左侧“放置Actor”面板中,将组件拖拽到场景中,并调整缩放,填满地板区域,按P键可以查看导航网格体的