虚幻引擎4笔记(9)-AI随机移动

前言

蓝图是虚幻引擎的一个可视化编码语言,不会编程的朋友也能通过蓝图来实现游戏的制作。
本人于2020年的3月份入坑虚幻4,可能技术上有些欠缺,要是有大佬发现哪里错了的话敬请指出。写文章的主要目的是为了记录自己的学习过程,不过也希望能帮助到其他像我一样的朋友学习虚幻蓝图。不同版本的虚幻引擎有进行不同程度的汉化,相应蓝图节点也会变化
此文章中使用的虚幻引擎版本: 4.23.1
随着学习的深入,后面的笔记会慢慢省略一些前面笔记写的内容,有需要的话可以去看较基础的笔记内容

虚幻4官方文档
虚幻4中文官网
虚幻引擎蓝图API参考文档
虚幻引擎4蓝图节点-小狐狸233

注:此篇文章主要是介绍一下AI的随机移动,不需要导入任何的包,下方的博客是有关AI行为树、黑板等内容的概念介绍,在实现AI随机移动之前请先去了解了解相应的概念。

虚幻引擎4-AI基础概念

上一篇笔记

虚幻引擎4蓝图笔记(8)-射击准星

动态预览图

虚幻引擎4笔记(9)-AI随机移动

一、AI可移动区

在模式的放置中搜索Nav Mesh Bounds Volume并拖动放置到地图中
虚幻引擎4笔记(9)-AI随机移动
调整相应的大小和位置
虚幻引擎4笔记(9)-AI随机移动
按下键盘的P键,绿色区域即为AI可移动的区域
虚幻引擎4笔记(9)-AI随机移动

二、AI黑板

在内容浏览器中创建一个黑板
虚幻引擎4笔记(9)-AI随机移动
虚幻引擎4笔记(9)-AI随机移动
打开AI黑板后,新建一个键值,这个值是用来保存AI需要移动的目标位置信息
虚幻引擎4笔记(9)-AI随机移动

三、AI行为树

[1]. 创建

创建一个行为树
虚幻引擎4笔记(9)-AI随机移动
虚幻引擎4笔记(9)-AI随机移动

[2]. 绑定黑板

双击打开行为树将会看见一个根节点,如果你已经创建了黑板的话,默认会帮你直接选定已创建的黑板
虚幻引擎4笔记(9)-AI随机移动

[3]. 序列合成节点

创建一个序列合成节点Sequence,这个节点的作用是先执行左子树,左子树执行完毕后将会按顺序执行相邻的右子树。
虚幻引擎4笔记(9)-AI随机移动
创建完毕后,将两者相连,Sequence节点右上角出现0,表示该节点第一个执行
虚幻引擎4笔记(9)-AI随机移动

[4]. 添加自定义任务

行为树中有自带一些任务,要实现自定义的功能的话得新建任务。
虚幻引擎4笔记(9)-AI随机移动
创建完毕后会在同目录下生成一个以BT名称开头的任务,为了方便区分就重命名了AI任务
虚幻引擎4笔记(9)-AI随机移动

(1) 变量

打开任务蓝图类,创建一个变量用于存储来自黑板的值
虚幻引擎4笔记(9)-AI随机移动
点击刚刚创建的变量,变更变量的类型为Blackboard Key Selector
虚幻引擎4笔记(9)-AI随机移动
将这个变量变为公有,之后的行为树调用时可以返回相应的坐标信息
虚幻引擎4笔记(9)-AI随机移动

(2) 触发事件

添加事件Receive Execute AI节点
当AI任务被执行时,事件Receive Execute AI节点将会被触发
虚幻引擎4笔记(9)-AI随机移动

(3) 传随机点的坐标值至变量

添加Set Blackboard Value as Vector节点
这个节点的作用是将位置信息传到输入接口Key对应的变量的值变为Value坐标值。
虚幻引擎4笔记(9)-AI随机移动
将变量拖动到蓝图中,选择获取。
然后按下图进行连接。
虚幻引擎4笔记(9)-AI随机移动

(4) 结束任务标识

添加Finish Execute节点
这个节点的作用是让一个任务结束,要不然在行为树中运行这个任务时将会停滞在该任务。
虚幻引擎4笔记(9)-AI随机移动
Success选择为ON表示运行该节点之后,将标志这个任务的完成
虚幻引擎4笔记(9)-AI随机移动

(5) 获取AI坐标

添加GetActorLocation节点
该节点能获取某个物体的坐标信息并输出
虚幻引擎4笔记(9)-AI随机移动
虚幻引擎4笔记(9)-AI随机移动

(6) 生成随机点

添加GetRandomPointInNavigableRadius节点
这个节点主要是用来在一个已知的圆中,生成一个随机的点并输出该点坐标
虚幻引擎4笔记(9)-AI随机移动
以AI的位置为圆点,以1000为半径的圆内,生成一个随机点的坐标并输出。
虚幻引擎4笔记(9)-AI随机移动

(7) 添加任务节点至行为树

点开之前创建的行为树,搜索刚刚创建的自定义任务并添加节点
虚幻引擎4笔记(9)-AI随机移动
任务节点只有一个输入接口,所以任务节点没法触发另一个任务节点。
连接完毕后右上角出现一个数字,表示该节点会第2个执行
虚幻引擎4笔记(9)-AI随机移动

[5]. 添加移动任务

虚幻引擎4笔记(9)-AI随机移动
右上角的-1表示不会被执行

虚幻引擎4笔记(9)-AI随机移动
虚幻引擎4笔记(9)-AI随机移动

[6]. 添加等待任务

如果没有添加等待任务的话,AI会一直来回地跑动不会停下来,要更好地观察AI移动的话就需要添加等待任务。
虚幻引擎4笔记(9)-AI随机移动
虚幻引擎4笔记(9)-AI随机移动

四、AI控制器

在创建AI前需要先创建一个AI Controller蓝图类
虚幻引擎4笔记(9)-AI随机移动
创建完毕如下图
虚幻引擎4笔记(9)-AI随机移动
在事件图表中,创建如下图的蓝图节点并连接
当AI控制器被调用时,将会触发事件On Possess节点,执行Run Behavior Tree节点从而调用刚刚创建的行为树。
虚幻引擎4笔记(9)-AI随机移动
编译保存

五、AI角色

先创建一个角色蓝图类
虚幻引擎4笔记(9)-AI随机移动
添加一个立方体到角色中,如果你需要用自己的模型时可以去看之前的笔记内容。
虚幻引擎4蓝图笔记(4)-角色模型导入

虚幻引擎4笔记(9)-AI随机移动
点击AI(自身),打开相应的细节面板
虚幻引擎4笔记(9)-AI随机移动
AI Controller Class中选择你刚刚创建的AI控制器,
Auto Possess AI设置成放置在场景中就会被AI控制器控制。
虚幻引擎4笔记(9)-AI随机移动
设置完毕后编译保存,之后你就可以直接拖动AI的角色蓝图类到场景中使用了。

六、已创建好的项目

虚幻引擎4笔记(9)-AI随机移动
下载链接
提取码: ryly