Unreal Engine 5.1 AI行为树基础入门

ai行为树理解起来其实是npc根据自身一些情况进行一些逻辑执行,而这些逻辑是我们使用ai行为树去实现的。
ai行为树需要一个寻路网格体边界体积,在ue引擎中,体积Actor分为多种,寻路网格体边界体积只是其中的一种。
关于其它的体积,可以在官网网站查看
在这里插入图片描述
通过上面的介绍,我们可以得知,这种体积可以生成一个角色可以移动的区域,实现自动寻路,而ai行为树会需要很多这种移动的行为,比如npc去寻找敌人并攻击。
可以在体积列表下找到寻路网格体边界体积
在这里插入图片描述
然后设置体积的缩放,让体积包围住整个可以移动的区域,按p键可以查看区域。
在这里插入图片描述
如果你需要一些动态物体的阻挡,那么需要将网格体更新设置成动态
在这里插入图片描述

在蓝图中使用导航数据

AI MoveTo节点使用
Pawn 需要自动移动的角色
Destination 一个明确的位置
Target Actor 一个明确的对象可以和位置二选一设置
Acceptance Radius 和目标的距离半径内
Stop on Overlap 进入目标半径后是否停止寻路
在这里插入图片描述

首先实现一个跟随主角的效果,只需要通过AI MoveTo节点,便可以实现设置跟随主角,设置定时器,更新位置即可,
在这里插入图片描述
我又有灵感,制作了另外一个版本,根据距离如果超过一定距离以后,再去跟随
在这里插入图片描述
实现随机位置移动,获取半径能氪抵达的随机位置,一种需要调用,另一种不需要
在这里插入图片描述

相关组件的介绍

要实现AI行为树去控制角色,那么需要创建几个文件:
在这里插入图片描述

AIController AI控制器,作为AI的入口,用来去驱动Pawn或Charactor的行为,修改设置在黑板里的数据。
在AI控制器内,可以添加一些AI感知组件,更好的处理一些操作。
在这里插入图片描述
使用AI控制器需要在角色蓝图上设置。
在这里插入图片描述
BehaviorTree 行为树里面主要行为控制,根据数据判断进行逻辑运行。ai控制器可以选择去使用哪个行为树去运行,你需要在ai控制器内指定运行的行为树
在这里插入图片描述

BlackboardData 黑板数据主要存储一些变量,AI控制器主要去修改,行为树用于去进行逻辑判断。黑板的数据需要在行为树内指定,然后才可以在行为树内使用。
在这里插入图片描述

行为树需要从根部向下添加选择器(Selector) 节点
在这里插入图片描述
合成(Composites) 节点是流控制的一种形式,决定了与其相连的子分支的执行方式。

  1. 选择器(Selector) 从左到右执行分支,通常用于在子树之间进行选择。当选择器找到能够成功执行的子树时,将停止在子树之间移动。举例而言,如果AI正在有效地追逐玩家,选择器将停留在那个分支中,直到它的执行结束,然后转到选择器的父合成节点,继续决策流。
  2. 序列(Sequence) 从左到右执行分支,通常用于按顺序执行一系列子项。与选择器节点不同,序列节点会持续执行其子项,直到它遇到失败的节点。举例而言,如果我们有一个序列节点移动到玩家,则会检查他们是否在射程内,然后旋转并攻击。如果检查玩家是否在射程内便已失败,则不会执行旋转和攻击动作
  3. 简单平行(Simple Parallel) 简单平行节点有两个"连接"。第一个是主任务,它只能分配一个任务节点(意味着没有合成节点)。第二个连接(后台分支)是主任务仍在运行时应该执行的活动。简单平行节点可能会在主任务完成后立即结束,或者等待后台分支的结束,具体依属性而定。

以上摘自官网 https://docs.unrealengine.com/4.27/zh-CN/InteractiveExperiences/ArtificialIntelligence/BehaviorTrees/BehaviorTreeQuickStart/
接下来的实现也是基于官方的,如果有需要,请移至官方查看。

任务可以在行为树上面的栏目选择创建
在这里插入图片描述
创建出来的任务,官方推荐使用BTT作为前缀
在这里插入图片描述
创建的任务中,添加事件接收执行AI,然后在后面可以执行一些逻辑,记得任务完成以后,要设置完成执行,不管成功不成功。
在这里插入图片描述

使用AI行为树实现官方案例

首先在黑板里面创建相应的变量
在这里插入图片描述
然后再ai角色蓝图内使用AI控制器
在这里插入图片描述
然后在AI控制器内设置使用行为树
在这里插入图片描述
然后增加视觉感知
在这里插入图片描述
设置检测中立方是因为按归属设置需要C++源码,然后在主角蓝图上面设置tag检测
在这里插入图片描述
在AI控制器中事件点击目标感知更新时回调
在这里插入图片描述
在更新时,判断是否为玩家标签,然后判断是否获取成功,设置分支
在这里插入图片描述
如果失败了,设置定时器,然后设置了每4s调用一次事件
在这里插入图片描述
如果获取了玩家角色实例,那么清除掉定时器,然后设置黑板的值。这样,行为树可以根据黑板的值进行逻辑运行。
在这里插入图片描述
注意这个黑板是黑板对象,不是黑板组件
在这里插入图片描述
然后行为树按照官方设置,注意节点右上角的数字,是当前的执行顺序。
在这里插入图片描述
根节点是选择跟
在这里插入图片描述
追逐玩家节点增加了一个装饰器黑板,观察器中止设置为both,是在黑板的值未改变之前,中止掉其它所有的执行,观察的值则是黑板上写的变量是否看到玩家,这个值改变时,会重新运行这个节点。
在这里插入图片描述
追逐玩家序列节点下面有三个任务,它们会按照顺序执行,找到玩家会朝向玩家,然后修改移动速度,并朝向玩家移动。
在这里插入图片描述
追逐玩家任务节点是我们自己实现的一个任务,在里面实现了对当前ai持有者的速度修改
在这里插入图片描述
然后就是第二个节点巡逻,第一个设置速度和位置,第二个节点朝向巡逻目标移动,移动成功后,等待3s-5s
在这里插入图片描述
第一个节点就是自定义任务,里面随机了一个可以移动到的节点,如果没有随机到的话,就原地移动。
在这里插入图片描述

接下里就是执行的问题
在这里插入图片描述
追逐玩家是需要黑板上的能够看到玩家这个值,如果这个值为false,会触发整个ai重新运行,然后直接跳到巡逻序列,巡逻序列会一直执行下去,直到能够看到玩家的值改变。
所以,追逐玩家,优先级最高,每次都是先运行,不可运行才会去巡逻,第十个等待在这个逻辑里面是运行不到的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/28276.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

什么是M-LAG?为什么需要M-LAG?

M-LAG(Multichassis Link Aggregation Group)提供一种跨设备链路聚合的技术。M-LAG通过将两台接入交换机以同一个状态和用户侧设备或服务器进行跨设备的链路聚合,把链路的可靠性从单板级提升到设备级。同时,由于M-LAG设备可以单独…

基于SSM的养老机构信息管理系统设计与实现

摘 要 随着我国老年人逐渐增加,老人们的子女数量减少,工作时间过长无暇照顾父母,导致养老院和护工需求量大幅上涨。伴随我国生活水平提高的同时对老年人的护工人员的要求也越来越高。根据以上要求关于养老院有很多的信息需要进行管理&#…

项目笔记-瑞吉外卖(全)

文章目录 1.业务开发day011.软件开发整体介绍2.项目整体介绍:star:3.开发环境搭建4.登录功能:star:4.1代码实现 5.退出功能6.页面效果出现 day021.完善登录功能2.新增员工功能3.启用禁用员工信息:star:(自定义消息转换器使用)4.编辑员工信息 day031.公共字段自动填充2.新增分类…

创业很长时间以后

创业过很长时间以后…综合能力是有滴 创业和打工后的思维习惯 为了效率,一般情况是这样滴 趣讲大白话:区别还是有滴 【趣讲信息科技195期】 **************************** 创业还是很难滴 每年成立很多新公司 有很多公司关门 公司平均生存时间&#xff1…

【哈佛积极心理学笔记】第6讲 乐观主义

第6讲 乐观主义 How can we create consciously and subconsciously a positive environment, where we actually can take out the most moral, the most successful self to appreciate that self. Create a powerful positive situation to bring out the best in people.…

基于Github开源项目Next Chat4 —— 之原生Js前端特效给你的眼睛来一场视觉盛宴吧

前期回顾 打造极简风格动效 —— 5 分钟轻松实现惊艳、震撼人心的视觉效果_彩色之外的博客-CSDN博客css Loading 实战教学https://blog.csdn.net/m0_57904695/article/details/131156011?spm1001.2014.3001.5501 👍 本文专栏:开发技巧 一键使用 GP…

OpenCV中的图像处理3.11(10) OpenCV中的图像变换

目录 3.11 OpenCV中的图像变换3.11.1 傅里叶变换目标理论Numpy中的傅里叶变换OpenCV中的傅立叶变换DFT的性能优化为什么Laplacian是一个高通滤波器?其他资源 翻译及二次校对:cvtutorials.com 编辑者:廿瓶鲸(和鲸社区Siby团队成员&…

Linux中的用户和组的分类

目录 Linux中的用户和组的分类 用户分类 超级用户 系统用户 普通用户 组的分类 基本组(私有组) 附加组(公有组) 系统组 Linux中用户和用户组的配置文件 在Linux中,用户账号、密码、用户组信息和用户组密码均…

KEGG注释:KEGG富集可视化柱状图

很久很久以前,看到过文章中的KEGG富集可视化结果图。是对KEGG通路进行注释的。后来在一些测序公司的宣传页上也见到过类似的图: image.png image.png 其实这个图就是多了一个KEGG通路注释,近期也有小伙伴寻求怎么做。网上很多在线工具可以完…

Windows/Linux搭建Stable Diffusion WebUI

什么是Stable Diffusion WebUI?能用来干嘛? Stable Diffusion WebUI(以下简称SD)是一个基于Gradio库的Stable Diffusion的浏览器界面,可以方便地配置和生成AI绘画作品,并且进行各种精细地配置。Stable Dif…

今天面试招了个23K的人,从腾讯出来的果然都有两把刷子···

公司前段时间缺人,也面了不少测试,前面一开始瞄准的就是中级的水准,也没指望来大牛,提供的薪资在15-25k,面试的人很多,但平均水平很让人失望。看简历很多都是4年工作经验,但面试中,不…

微信小程序实现一个文字展开收起功能

1.0 需求背景 需求很常见,就是当一行文字过多时,显示省略号,然后显示展开两个字,点击,文字完全展示开,点击收起,回到省略形式,如下图 2.0 需求分析 有了上图,应该能更好…

总结排查服务器上传下载慢的几种手段与查看服务器带宽的具体方法

一、排查服务器上传下载 最近出现的一个情况,服务器上传和下载比较慢,因此我排查了种种手段,特此记录下几种常见的手段。 1、使用speedtest-cli 测试网速: 该方法是测试网速的速度怎么样,看看是否真的慢? …

软考A计划-2023系统架构师-知识点集锦(4/4)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列 👉关于作者 专注于Android/Unity和各种游戏开发技巧&#xff…

Spring Security--自动登录

也就是remember me 在配置链上加一个 然后发送请求时加上:remember-me字段 value值可以为,ture,1,on 我们记住登录后,关掉浏览器再打开,访问一下接口,可以访问,说明记住登录成功了。 因为有的…

JavaScript:从入门到精通:初始JS

JS基本思想 1. 浏览器对 JS 支持2. JS程序的组成3. JS 开发工具 1. 浏览器对 JS 支持 🧡背景 1997年 微软和网景公司合作发布了 ECMAScript 的语言规范 从那时起,微软所有浏览器都支持ECMAScript 标准 1999年,ECMAScript 第三版,…

mybatis-plus用法(二)

(5条消息) mybatis-plus用法(一)_渣娃工程师的博客-CSDN博客 AR模式 ActiveRecord模式,通过操作实体对象,直接操作数据库表。与ORM有点类似。 示例如下 让实体类User继承自Model package com.example.mp.po; import com.bao…

【026】C++的内联函数、函数重载、函数的默认参数与占位参数

C的内联函数、函数重载、函数的默认参数与占位参数 引言一、内联函数1.1、声明内联函数1.2、宏函数和内联函数的区别1.3、内联函数的注意事项 二、函数重载2.1、函数重载的概述2.2、函数重载的条件2.3、函数重载的底层实现原理 三、函数的默认参数四、占位参数五、extern "…

量化投资 现代投资组合理论(MPT)

量化投资 现代投资组合理论(MPT) 问题:构建投资组合,达到目标收益率的同时拥有最小的 risk exposure. 有 J J J 个可交易证券,期望收益率为 R [ R 1 , ⋯ , R j ] T R[R_1,\,\cdots,\,R_j]^T R[R1​,⋯,Rj​]T&…

监控、审计和运行时安全

监控、审计和运行时安全 目录 文章目录 监控、审计和运行时安全目录1、分析容器系统调用:SysdigSysdig介绍安装sysdigsysdig常用参数sysdig常用命令Chisels(实用的工具箱)其它命令 2、监控容器运行时:FalcoFalco介绍Falco架构安装falco自定义扩展规则文件…