学习蓝图+行为树实现AI角色的跟随操作
跟随B站视频学习
准备工作
一个角色蓝图类用来设置AI角色,一个Blackboard--AI的大脑,一个AITree--AI的行为控制,一个AIController蓝图类--定义AI的控制器。
是否发现角色
首先需要在Blackboard中定义Bool变量是否发现角色。
然后在AIController中设置IsSeePlayer。在AIController中新增组件AIPerception用于视线检测,当AI的视线发现了角色时设置bool值为true。
首先在AIPerception细节面板中设置如何寻找选择视线,AI Sight Config,其中可以设置视线范围,和视线宽度,目前需要将Neutrals勾选,才可以识别同类型Actor。
添加组件事件On Target Perception Updated,当发现目标时,更新。首先将目标类型转换为ThirdPersonCharacter,然后调用Stimulus中的Successfully Sensed值。这个值就是我们对IsSeePlayer的修改值。为了获取IsSeePlayer需要获取黑板BlackBoard,然后使用Set Vlaue as Bool。
发现角色或者没发现角色之后的操作
这一部分需要在AITree里完成,其相当于一个判断并给出对应true false需要进行的操作。
首先需要对AITree选择其所属的BlackBoard。
之后Root下有三个Composties,首先我们是需要根据Bool值判断进行什么事件,所以选择Select,然后两个分支Sequence。
那么如何确定何时执行其中一个Sequence呢?
对每个Sequence添加我们的BlackBoard,然后设置我们要选择的属性IsSeePlayer
Key Query为Is Set表示为true执行,Is not Set表示为false执行,并且需要修改Observer aborts为both使得两个sequence的判断级别是同一个级别。
之后我们需要添加判断之后需要进行的任务,所以新建task
发现角色后的Task
首先直接利用模板进行函数重载(事件)。
当事件接受执行AI时,使用AIMoveTo模块设置AI行动位置,并且对于执行完一次后要添加Finish Execute。使得这个Task结束,否则会一直在这个Task中导致出现错误。
可以看到我们还设置了SetFocus目的是为了是AI的跟随性增强。Event节点中的两个参数OwnerController为AI的控制器,注意这个控制器不是我们新建的那个蓝图类,而是类似我们操作角色的鼠标键盘这种控制器,Controlled Pawn就是AI角色。
没有发现角色的Task
当我们没有发现角色,那么就需要把聚焦清除,实现角色的随机朝向移动,同样需要在操作结束后Finish。
同时我们在该Sequence下又拖入了Wait实现到达一个点后停止一段时间。
绑定一个小白人使用AIController
对一个小白人的蓝图打开细节面板,在Pawn面板中选择AI Controllrt的应用类选择我们刚才创建的AIController蓝图。
但此时蓝图只是判断了是否观测到角色,但观测后的行为没有绑定,而这些行为我们是定义在AITree里的,所以我们需要在AIController蓝图的事件开始时,绑定AITree。
在BTAsset选择我们创建的AITree。
总结
主要是要进行对应的绑定操作
对于AITree 要绑定对应的BlackBoard
对于AIController 要在事件开始时,run AITree,并在其中修改我们想修改的BlackBoard中的值
对于Actor蓝图类 就需要绑定我们创建的AIController蓝图。
如何使得AI跟随的视线更合理,在Task中利用SetFocus和ClearFocus,通过修改控制器的Yaw朝向。而不是利用角色移动组件中的orient rotation to movement来控制。
一个Task的结束需要使用Finish来完成,避免始终进行同一个Task。
学习蓝图+行为树实现AI角色的跟随操作的更多相关文章
- UE4蓝图AI角色制作(六)之行为树
13.行为树原理 AI最重要的环节就是行为树.我们将解释什么是行为树.为何它如此重要,以及构建行为树需要哪些元素. 借助行为树,我们可以轻松控制并显示AI的决策制定过程.行为树是一种将AI在场景中的决 ...
- UE4蓝图AI角色制作(四)之Gameplay调试器
8. 寻路网格体和Gameplay调试器 为了及时识别出AI系统中的导航问题,UE4提供了一个工具用来解决这类问题,它叫Gameplay调试器.打开项目设置,在左侧找到"引擎",然 ...
- UE4蓝图AI角色制作(三)
接上一节 6. 寻路网格体代理 通过允许配置多个"代理",虚幻引擎使得用户能够轻松为大小各异的AI创建寻路网格体.首先,选中世界大纲视图中的"RecastNavMesh& ...
- Unity3d之Hash&Slash学习笔记之(二)--角色基础类的构建
Hash&Slash学习笔记之(二)--角色基础类的构建 BaseStat类的构建 基本成员变量: _baseValue //基础属性值 _buffValue //增加的buff值 _expT ...
- 针对深度学习(神经网络)的AI框架调研
针对深度学习(神经网络)的AI框架调研 在我们的AI安全引擎中未来会使用深度学习(神经网络),后续将引入AI芯片,因此重点看了下业界AI芯片厂商和对应芯片的AI框架,包括Intel(MKL CPU). ...
- C语言数据结构基础学习笔记——B树
2-3树:是一种多路查找树,包含2结点和3结点两种结点,其所有叶子结点都在同一层次. 2结点:包含一个关键字和两个孩子(或没有孩子),其左孩子的值小于该结点,右孩子的值大于该结点. 3结点:包含两个关 ...
- IOS学习之IOS沙盒(sandbox)机制和文件操作
IOS学习之IOS沙盒(sandbox)机制和文件操作(一) 1.IOS沙盒机制 IOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都 ...
- ElasticSearch 学习记录之ES几种常见的聚合操作
ES几种常见的聚合操作 普通聚合 POST /product/_search { "size": 0, "aggs": { "agg_city&quo ...
- 深入浅出学习Hibernate框架(二):JDBC基础操作
上篇博客<深入浅出学习Hibernate框架(一):从实例入手初识Hibernate框架>简单介绍了一下Hibernate框架,并且举了一个实例来了解Hibernate.这篇博客将介绍JD ...
- iOS学习之iOS沙盒(sandbox)机制和文件操作1
iOS学习之iOS沙盒(sandbox)机制和文件操作 接上篇 iOS学习之iOS沙盒(sandbox)机制和文件操作(一) 我们看看如何获取应用程序沙盒目录.包括真机的沙盒的目录. 1.获取程序的H ...
随机推荐
- Spring Cloud Openfeign微服务接口调用与Hystrix集成实战
关于openfeign 可以认为OpenFeign是Feign的增强版,不同的是OpenFeign支持Spring MVC注解.OpenFeign和Feign底层都内置了Ribbon负载均衡组件,在导 ...
- 【libGDX】Mesh立方体贴图(6张图)
1 前言 本文通过一个立方体贴图的例子,讲解三维纹理贴图的应用,案例中使用 6 张不同的图片给立方体贴图,图片如下. 读者如果对 libGDX 不太熟悉,请回顾以下内容. 使用Mesh绘制三角 ...
- mp4v2开发笔记(一): mp4v2库介绍,mp4v2在ubuntu上交叉编译移植到海思Hi35xx平台
前言 在海思上需要将h264码流封装成mp4可使用mp4v2库. 其他相关 <Qt开发笔记之编码x264码流并封装mp4(四):mp4v2库的介绍和windows平台编译> ...
- socket及黏包现象及解决黏包---day28
1.四次挥手(补充) 客户端向服务端发送一个请求消息,断开连接(代表客户端没有数据传输了) 服务端接收请求,发出响应 等到服务端所有数据收发完毕之后 服务端向客户端发送断开连接的请求 客户端接收请求后 ...
- 【LeetCode二叉树#04】判断对称二叉树、相同的树、另一棵子树、树的子结构(二叉树相等判断)
对称二叉树 力扣题目链接(opens new window) 给定一个二叉树,检查它是否是镜像对称的. 思路 本题中,不能单纯去比较左右子节点的是否对称(都有值且不为空) 因为如果按上面那样做的话,到 ...
- Taurus.MVC WebMVC 入门开发教程4:数据列表绑定List<Model>
前言: 在本篇 Taurus.MVC WebMVC 入门开发教程的第四篇文章中, 我们将学习如何实现数据列表的绑定,通过使用 List<Model> 来展示多个数据项. 我们将继续使用 T ...
- 【Azure 事件中心】Spring Cloud Stream Event Hubs Binder 发送Event Hub消息遇见 Spec. Rule 1.3 - onSubscribe, onNext, onError and onComplete signaled to a Subscriber MUST be signaled serially 异常
问题描述 开发Java Spring Cloud应用,需要发送消息到Azure Event Hub中.使用 Spring Cloud Stream Event Hubs Binder 依赖,应用执行一 ...
- Autofac入门与替代ASP.NET Core、ABP依赖注入容器
目录 Autofac 的使用 1,简单的实践 2,注册组件 3,Lambda 注册组件 4,注册泛型 5,属性注入 6,解析服务 7,生命周期 8,实例作用域 9,Autofac 其它需要学习的知识 ...
- win上vscode出现undefined reference to `__imp_WSACleanup'
示例代码 #include <iostream> // 推荐加上宏定义 #define WIN32_LEAN_AND_MEAN #include <winsock2.h> #i ...
- 微软应用商店错误代码“0x80131500”怎么修复?
处理方法一 打开"运行"输入 inetcpl.cpl ("WINDOWS"+"R"键,输入 inetcpl.cpl亦可),点开高级往下拉,勾 ...