Ue4行为树学习笔记 二
- 前言
-
- 行为树创建于布局
- 任务设立——追逐
- 随机巡逻
- AI控制器的设置
- 最终设置
- 尾声
前言
因为篇幅原因,没看过上篇还请移步至
Ue4行为树学习笔记 一
引用资料
行为树快速入门指南
UE4学习笔记:行为树(BehaviorTree)实例
行为树创建于布局
在内容浏览中,单击右键,于人工智能(Artificial Intelligence )中找到行为树主键,单击创建。
之后,打开新建的行为树,于root根上绑定刚才创建的黑板资源。
然后与在 root 节点中往下拖出一个选择器(Selector)节点,此节点作为此AI行为树的根节点。
Selector节点大概类似于if…else语句,从左到右开始运行,当有一个节点成功运行时,将运行至节点结束。
Sequence节点为从左到右按照顺序运行,当中有一个节点运行失败时,将不会往下继续运行。
Simple Parallel节点用游戏来简单说明就是主线与支线的关系,主节点完成后,次节点将一同结束;而次节点完成则不影响主节点运行。
由于想节省时间而选择在官方文档中截图说明。1.创建了AI根之后,往下拉出数个序列节点(Sequence),这俩个节点将用来进行AI的追逐以及巡逻。
2.在AI根中拖出,在右侧添加等待(wait)命令,以在指令失败后进行得带 (时间随定)
3.在追逐节点中,点击右键,在添加装饰器中找到(Blackbolrd)黑板,并添加(之后再说明)
任务设立——追逐
在行为树蓝图中,找到新建任务,点击创建一个基于基类的任务。之后会在资源管理器上多出一个任务资产。
首先,我先讲下我个人理解的思路。
- 用先前黑板中的 HasLineOfSight 变量来判断敌人是否看到玩家物体
- 让敌人转向玩家
- 修改敌人的移动速度
- 向玩家移动
一: 在先前在追逐的节点设置的黑板装饰器中,
流控制选为Both全选、
黑板键选择HasLineOfSight。
使用黑板装饰器(Blackboard Decorator)来确定黑板键的数值,当判断为有效时,才会允许这个分支执行。
装饰器(Decorator): 也称为条件语句,这种附着于一个节点中,决定着树中的其中一个分支,以来判断是否能执行。
服务(Service): 这类节点连接至任务(Task)节点和合成(Composite)节点,只要它们的分支还在运行,就会与所定义的频率来执行。
二:打开刚才新建的任务资源蓝图,右击添加Event Received Execute AI(当事件接受时执行AI) 节点。
然后在Controlled Pawn引脚后连接 Cast to xxx(xxx指敌人蓝图),来访问AI的角色蓝图。
然后,打开角色蓝图,角色蓝图的内容浏览器中添加一个函数。
并在此函数细节面板中添加float变量。
之后把角色移动主键拖到新建函数表旁边,并从中拉出Set Max Walk Speed 变量框 并与函数连接
编译保存后,返回追逐命令资源蓝图。之后拖出刚才在敌人蓝图新建立的函数,并在后面的调节变量中设置一个喜欢的速度值。
并在Cast Failed节点拉出Finish Execute 节点以避免函数失败
之后,用Finish Execute(结束执行)节点来结尾。
最后,在行为树的追逐节点,从左到右添加
Rotate to face BB entry(转向)
新建的追逐任务资源(右键添加中就能找到)
Move to (移动到指定位置)
(注意: 当中所有的黑板键都设置成当时建立黑板的 EnemyActor)
随机巡逻
- 同上的追逐,新建一个任务资源
- 获取一个范围内的随机位置,并判断可不可前进
- 假设前行可能便将位置传至黑板记录
Set Blackboard Value as Vector(设置黑板值为向量) :值将数值传递到黑板的key中
后同理,将新建的任务资源设置在行为树蓝图中在Move to 至 黑板中向量PatrolLocation 的位置,随后再调用等待停留一段时间后继续运行
AI控制器的设置
- 在基于AIController基类的蓝图中连接行为树资源
- 添加AI感知组件
- 在AI感知事件(On Target Perception Updeted)中建立判断
- 判断玩家tag以及行为刺激
- 将获取的情报传进黑板中进行使用
在组件中添加AI感知组件(AIPerception Component)创建一个刺激监听器。 并细节中的AI感知组件(AIPerception Component) 的面板中添加AI视觉配置(AI Sight config),并在之下启动检测中立方(Detect Neutrals),最后在事件(Enemts)部分 点击 On Target Perception Updated(目标感知更新时)添加事件
(其中Key name必须为黑板类声明的变量)
最终设置
打开玩家蓝图,在细节面板中添加标签(tags)
以及在AI的蓝图类中的细节面板上,设置旋转(Rotation)中允许使用控制器旋转Y轴(Use Controller Rotation Yaw),这会使AI在行为树调用Rotate to face BB entry 中正确旋转
将设置完成的AI模型放置在场景中,并在pawn类中添加AI控制器类
最后在放置actor类中找到导航网络体边界体积(Nav Mesh Bounds Volume)覆盖整个地图场景。
播放即可。
尾声
好了,行为树篇章就到这里完结了(这玩意居然字数快能赶上论文),途中真不想打太多字所以截图来说明,故最好能看一下文档,那最为详细。
啥都不会又偷懒的屑
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)