本章分成两块部分一块是第一点的制作一个简单的AI,后面第二点之后是第二部分建立ai行为树。这两个部分是一个衔接,最好不要跳看
一,制作一个简单的AI
1.首先,我们创建一个敌人的角色蓝图,添加一个场景组件widget用于添加敌人的UI于蓝图视口,可在运行的时候,看到血条UI,如果你还没做这个,可以暂时不加这个组件,后面我会开基础UI编写文章
2.添加pawn感应组件用于敌人视听看感官

3.点击widget,细节设置如下,这是敌人UI的设计

4.点击pawn感应组件,我只改了两个值,你可以看看视口有很多线形范围,根据自己所需调整

5.打开事件图表,编写以下蓝图
pawn事件,当敌人看到玩家的时候,会打印hello

6.编写以下蓝图
先自定义事件,再事件开始运行ai巡逻,ai能一次性移动1000的半径,每次移动等待1~2秒再次移动,每移动完一次打印到达。理解起来很简单

7.打开主界面,创建一个导航网格体边界体积,这绿色的范围就是敌人可巡逻范围


好的,我们运行一下就可以看到ai可以随机移动,并且你靠近他的视野范围会靠近你
以后有很多的ai,我们再创建一群ai时担心任务繁琐,需要用到ai行为树解决这问题
9,运行完了,为了后面更好的建立ai行为树,我们取消事件开始运行与ai巡逻事件的触发,把白线断了即可
二,建立ai行为树
1.打开主界面,右键新建蓝图,搜索ai控制器(aicontroller),创建ai控制器蓝图

2.双击进入ai控制器
创建运行行为树,但我们还没有行为树资产,这还需要我们去创建其他的

三,创建行为树
1.回到主界面,右键,选中人工智能,选中行为树

2.回到我们的ai控制器蓝图,选择我们的行为树资产

3.回到主界面点开我们的行为树
介绍Sequence特点

介绍Selector特点

move to执行为什么会执行失败,如何执行成功呢?就需要我们的黑板
四,创建黑板
1.为move to新建一个黑板
左上角,新建黑板,命名带block,上面的行为树命名带tree

2.还是在我们的行为树里,点击空白位置,右侧细节处,选择刚刚创建的黑板资产

3.打开黑板,新建向量并命名moveto
我们的移动就是按照向量变化的,所有新建一个向量最好

4.选中我们的moveto,找到黑板键选择

五,创建任务
1.新建任务,我们的moveto需要看了黑板,就需要个表去记录任务,命名要带有task
我们的这个任务就是我们的事件图表,类似角色蓝图动画蓝图里面的

2.在任务里,创建事件,这个事件是官方给的,不是自定义的

3.编写以下蓝图

注意,我们这个key变量得是全局变量,否则行为树,还有其他蓝图就访问不了利用不了
记住还要编译一下,否则等会行为树就不会出现跟我一样的情况

4.回到行为树,在moveto之前执行一个task,我的任务命名是ue5_task,你的可能跟我不一样

5.选中我们的task,默认key选择moveto

这样任务task,行为树,黑板全部联系起来了
运行,就可以发现跟我们第一点讲的建立简单ai敌人的行为一致了,虽然麻烦但这种方法可以创建很多个ai敌人