Ue4行为树学习笔记 二

2023-05-16

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)黑板,并添加(之后再说明)
在这里插入图片描述

任务设立——追逐

在行为树蓝图中,找到新建任务,点击创建一个基于基类的任务。之后会在资源管理器上多出一个任务资产。
在这里插入图片描述![在这里插入图片描述](https://img-blog.csdnimg.cn/20201217173612698.png
首先,我先讲下我个人理解的思路。

  1. 用先前黑板中的 HasLineOfSight 变量来判断敌人是否看到玩家物体
  2. 让敌人转向玩家
  3. 修改敌人的移动速度
  4. 向玩家移动

一: 在先前在追逐的节点设置的黑板装饰器中,
流控制选为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)

随机巡逻

  1. 同上的追逐,新建一个任务资源
  2. 获取一个范围内的随机位置,并判断可不可前进
  3. 假设前行可能便将位置传至黑板记录
    在这里插入图片描述Set Blackboard Value as Vector(设置黑板值为向量) :值将数值传递到黑板的key中

后同理,将新建的任务资源设置在行为树蓝图中在Move to 至 黑板中向量PatrolLocation 的位置,随后再调用等待停留一段时间后继续运行
在这里插入图片描述

AI控制器的设置

  1. 在基于AIController基类的蓝图中连接行为树资源
  2. 添加AI感知组件
  3. 在AI感知事件(On Target Perception Updeted)中建立判断
  4. 判断玩家tag以及行为刺激
  5. 将获取的情报传进黑板中进行使用

在这里插入图片描述
在组件中添加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(使用前将#替换为@)

Ue4行为树学习笔记 二 的相关文章

随机推荐

  • Linux LVM root分区 磁盘扩容

    LVM 的基本概念 物理卷 Physical Volume PV xff1a 可以在上面建立卷组的媒介 xff0c 可以是硬盘分区 xff0c 也可以是硬盘本身或者 回环文件 xff08 loopback file xff09 物理卷包括一
  • 浅尝树莓派3之串口配置

    树莓派3硬件串口的使用及编程 发表于 2017 01 29 分类于 树莓派 暂无评论 阅读次数 54 引言 本文转载自 xff1a http etrd org 2017 01 29 E6 A0 91 E8 8E 93 E6 B4 BE3 E
  • Android开发必备——注解

    前言 阅读官方源码以及各类第三方框架时可以发现 xff0c 很多地方都有注解 xff0c 作为一名Android程序员 xff0c 掌握注解属于必不可少的一项技能 1 什么是注解 注解是以 64 符号开头的用来标识如类 字段 方法等的工具
  • ROS 'catkin_make' 命令出错

    之前 xff0c 我在自己的电脑上 xff08 新安装的ubuntu16 04 xff09 装好了ROS xff0c 用catkin make编译成功了 xff0c 但是用一样的方法在实验室的电脑上编译就报错 xff0c 后来发现和之前装过
  • PX4 里面的TCP服务端代码

    PX4 里面的TCP服务端代码 span class token comment examples nettest nettest server c Copyright C 2007 2011 2012 Gregory Nutt All r
  • 传感器研究NO1.陀螺仪

    一 陀螺仪重要参数 如下图所示 xff0c 一般陀螺仪手册具有很多参数 xff0c 此处仅记录软件编程应注意的参数 Full Scale Range xff08 量程 xff09 xff1a dps xff08 Degree Per Sec
  • ESP8266与电脑PC端TCP通讯步骤+例子一

    我们先讲 xff0c 拿到一个ESP8266模块之后 xff0c 该做什么 我拿到这个模块之后 xff0c 一脸蒙蔽 xff0c 我不知道怎么使用 xff0c 这个时候 xff0c 不要慌 xff0c 去看技术手册 我4步让你学会最简单的使
  • 读java编程思想的一点感触

    学习一些java基础语法后 xff0c 能应付简单的日常工作 但是觉得还是得系统学习一下这门语言 xff0c 就选择了java编程思想 原书第4版 xff0c 机械工业出版社 xff0c 陈昊鹏译的这本 看懂的不是很多 xff0c 还是学到
  • linux---UDP代码通信

    udp连接特性 xff1a 无连接 xff1a 可以不构成连接就进行通信不可靠 xff1a 数据并不能保证可靠性面向数据报 xff1a 每条数据有长度限制 xff0c 整条数据发送整条数据接受 xff0c 传输不灵活 xff0c 但是不会存
  • virtualBox安装debian9.5的网络配置杂记

    2019 02 01补充 桥接模式设置方式 1 虚拟机界面 gt 设备 gt 网络 gt 网络 gt 网卡1 gt 桥接网卡 2 连接虚拟机 xff0c 为虚拟机配置一个ip地址即可 ip a add 192 168 0 107 24 de
  • 如何在linux shell脚本中自动输入密码.

    答案是需要通过expect 来实现 注意 如果没有 expect xff0c 需要预先安装 tony 64 pd2 yum info expect Loaded plugins fastestmirror Repodata is over
  • 动态捕捉(四)深度图像基础知识

    第一部分 xff1a 深度图像 xff08 depth image 也被称为距离影像 xff08 range image xff09 xff0c 是指将从图像采集器到场景中各点的距离 xff08 深度 xff09 作为像素值的图像 xff0
  • 完善二叉树的右指针

    对于一个二叉树 xff0c 每个结点有三个指针 xff0c 除了左右子节点指针外还有一个指向右边的结点的指针 现在给定一个二叉树 xff0c 每个结点的右指针为空 xff0c 让你把每一层的结点都连起来 xff08 默认是完全二叉树 xff
  • dockerfile文件参数

    一 背景 如果仅限于使用dockerhub里面的镜像 xff0c 是没办法满足我们实际的应用场景的 xff0c 所以我们需要创建属于自己的docker镜像 构建docker镜像需要编写dockerfile xff0c 却不知道语法怎么写 下
  • pycharm 不能单步调试(debug)的原因,或者点击debug不能进入断点。debug区域是灰色的

    如上图 xff0c 不要点击pycharm右上角的Debug 那样不能进入调试 xff08 在多个py文件都存在的情况下 xff09 xff0c 找到程序的入口点出 xff08 if name 61 61 34 main xff09 xff
  • 进程切换时是如何保存上下文的

    前言 当前操作系统大部分采用分时的进程调度 既每个进程运行一小段时间 然后切换到下一个进程运行 依次往复 当进程运行的时候是独占CPU的 此时操作系统是无法强行介入的 为了将执行权让出来 就需要硬件的配合了 硬件每个一个时钟周期 比如10m
  • 使用ROS节点控制PX4——总体流程

    1 安装ROS IDE xff1a Roboware Studio xff08 只支持linux xff09 网址 xff1a http www roboware me Roboware可以很方便的创建工作空间 xff0c 编写程序后可以自
  • 使用ROS节点控制PX4——位置控制

    上一篇简要介绍了ROS控制PX4并使用仿真环境进行调试的框架 点击打开链接 本篇将详细介绍ROS节点的发布与订阅细节 xff0c 并使用gazebo进行仿真调试 任务 xff1a 实现飞机的自动起飞 xff0c 然后在两点之间循环飞行数次
  • Odroid与电脑连接教程

    当我们在Odroid上安装了linnux系统后 xff0c 需要将电脑与Odroid进行连接 xff1a 一方面可以方便的把在电脑中调试成功的代码拷入odroid运行 xff0c 毕竟相比于电脑 xff0c Odroid还是很卡的 另一方面
  • Ue4行为树学习笔记 二

    Ue4行为树学习笔记 二 前言引用资料 行为树创建于布局任务设立 追逐随机巡逻AI控制器的设置最终设置尾声 前言 因为篇幅原因 xff0c 没看过上篇还请移步至 Ue4行为树学习笔记 一 引用资料 行为树快速入门指南 UE4学习笔记 xff