虚幻5|AI行为树,进阶篇

news2024/11/15 12:06:48

一,打开敌人的角色蓝图,编写以下蓝图,该蓝图只是创建一个敌人并非ai行为树

1.编写蓝图


 

2.打开主界面,创建一个导航网格体积,上一章都有讲,在添加体积这里面,找到导航网格体积,点击创建,自己弄范围,可以看到,我图下是绿色的就行了

3.运行一下,可以发现角色移动到玩家,并进行攻击

二,创建以下,基础篇有讲

第一个是ai控制器,第二个是黑板,第三个是task任务,第四个是AI行为树

其中,黑板和task是在AI行为树里创建的

注意敌人的角色蓝图,点击类默认,选择我们创建的ai控制器

打开我们上一章建立的ai_tree

1.打开黑板,创建一个变量名为AttackTarget,并在右侧黑板细节处,打开键类型,基类选择Actor

定位目标

回到行为树,创建一个moveto并命名为MovetoTaget,选中它并右侧细节,黑板键选择我们刚刚创建的变量

2.打开我们创建的ai控制器

3.编写以下蓝图,注意选择对应的ai行为树

4.在变量ai处,拖出blackboard变量,编写以下蓝图,紫色那块是拖出来提升为变量的

记得命名

5.我们把之前创建好的object变量的命名复制粘贴到,key name的变量里,选中我们这变量

6.添加以下蓝图

三,尝试一下只使用ai行为树,打开敌人的角色蓝图断开事件触发链接,可以发线角色只追着玩家

这里的Attack,不要断掉,我这里错了

四.打开我们在ai行为树创建好的task

1.这是我们上一章ai行为树讲的ai巡逻,我们段开事件触发链接

2.打开敌人的角色蓝图

添加一个事件分发器 OnAttackEnd

再把刚创建的事件分发器放播放蒙太奇之后调用

3.回到我们的task,事件执行触发链接如下

如果没有事件触发器就会,导致敌人攻击的时候会卡在的行走和攻击之中

4.打开我们的ai行为树

链接我们的task

这个可以不选,目前不起什么作用,我们没有在黑板设置attack变量,优先级比较次,

好的我们运行就可以很流畅的攻击主角了

我们可以加一个wait,打完后停一下

如果你没有给敌人添加npc的头部旋转看向主角的操作,那么你的敌人会背对着打你,我们需要以下操作

五,让敌人精准打击主角

1.继续在我们的ai行为树里,创建一个task,蓝图基础的task,命名为BTTask_FocusTaget

2.打开后,创建一个变量,注意该变量的引用类型设置一下,我们还要选中该变量,在右侧细节栏,处把默认改为键或者输入英文keys,并勾选可编辑实例

编写以下蓝图时注意success要勾选

为了更好的设置敌人的转向,如果你的敌人是复制的其他角色的蓝图,那么你需要更改一下它的控制器

如果敌人打到我们,那么敌人应该要扫射一下周围才进行追玩家

六,敌人扫射周围的创建

1.还是像之前创建task那样,创建一个蓝图基础,命名为BTTask_ClearFocus,不在敌人视野范围时

我这是已经创建了的

2.打开该task后

3.回到行为树

加上这个task

七,添加武器——非ai行为树版

1.给角色上武器

2.创建该武器的actor蓝图,创建一个静态网格体,选择该武器资产网格体,还要改它的碰撞预设为nocolistion

3.打开敌人的角色蓝图,给敌人附加武器,注意class,还有武器插槽和位置

在事件开始运行调用事件,运行游戏试试

好的,我们只断开事件开始运行

八,添加武器——ai行为树版

1.再来到ai行为树,再创建一个task,命名为BTTask_WieldSword,我这已经创建了

2.打开后,编写以下蓝图,调用之前的事件WieldSword

3.回到行为树,链接该task

为了能在跑的时候,不攻击,攻击的时候不移动,这样就更好了

九,给BTTask_WieldSword创建一个装饰器

1.打开ai行为树

左上角创建一个装饰器,命名为BTDecorator_isWieldingSword

2.打开后,在函数重载一个执行条件检测AI

3.打开敌人的角色蓝图,创建一个布尔,是否挥舞武器

4.设置附加武器的条件

5.回到我们的装饰器蓝图

6.打开行为树,右键对应的武器task,添加装饰器

6.点击装饰器,右侧翻转条件,以判断武器挥舞是否为假

如果它挥舞失败了,sequence后面的就不会执行了,但我们只是想判断这个条件而已,这就需要用到我们的selector,上一篇讲过其用法

我们就需要加一个selector判断条件,无论是否为真假,后面的都执行,而唯有自己为真执行自己,为假,自己单独不执行

结束,我们运行一下

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

安装buf工具和环境变量

安装buf工具和环境变量 下载buf的可执行文件: 访问buf官方的GitHub releases页面。 没梯子的就用csdn下载吧 https://download.csdn.net/download/qq_27229113/89638643 找到最新版本的buf。 在Assets部分,下载适合Windows的二进制文件,一…

如何利用宝塔给WordPress网站搬家?详细分步教程

对于使用WordPress建站的站长来说,网站搬家是一项必备技能。无论是重装系统、升级配置还是服务器迁移,掌握网站搬家的技巧可以让你在选择服务器时更加灵活。本文将详细介绍如何使用宝塔面板来搬迁WordPress网站。 1. 备份数据库 记住数据库用户名和密码…

Python 批量读取西门子PLC

需要安装 pip install python-snap7 import snap7 from snap7.util import * import struct # PLC的IP地址, Rack和Slot plc snap7.client.Client() plc.connect(127.0.0.1, 0, 1) # IP, Rack, Slot # 读取DB1中的10个字节,起始于0位置 db_number …

企业多样化需求一键满足:可道云teamOS,助力定制专属企业网盘

在这个飞速发展的数字化时代,企业的运营需求越来越多样化,如何高效地管理数据、实现安全协作,成为摆在我们面前的重要课题。 幸运的是,我遇到了可道云teamOS。 首先,可道云teamOS的自定义用户权限功能让我印象深刻。…

Bug定义及生命周期(七)

BUG 定义 软件的bug,软件程序的漏洞或缺陷 – 常见,首先发现 软件可改进的细节,或与需求文档存在差异的功能实现等 测试工程师:发现bug,定位bug,提交bug,回归bug 类型 确定bug类型&#xff…

Android-->产物收集(含apk文件重命名, aab文件重命名)

以前写过修改apk生成路径和文件名的文章, 如下: AS–›Gradle 7.0.0/4.1.0/4.0/3.3/3.0 修改APK生成路径和文件名(附AAR修改方式以及分析过程)_com.android.build.gradle.internal.api.libraryvaria-CSDN博客 这种方法入侵了gradle,破坏了原有的gradle环境, 经常会导致如下问…

2024年8月中国数据库排行榜:OceanBase攀升再夺冠,达梦跃入三甲关

在这个炽热的季节,随着巴黎奥运会的盛大开幕,全球将目光聚集在了体育的无限魅力和竞技的巅峰对决上。如同奥运赛场上的激烈角逐,中国数据库界也上演着一场技术与创新的较量,各个数据库产品正在中国乃至全球舞台上展示着它们的实力…

mitmproxy 抓包工具的使用

motmproxy 是一个支持 HTTP/HTTPS 协议的抓包程序, 和 Fiddler, Charles 有些类似的功能,只不过它以控制台的形式操作 mitmproxy 还有两个关联组件。 一个是 mitmdump , 这是 mitmproxy 的命令接口, 利用它我们可以对接 Python …

企业用的文件加密软件有哪些?2024年最好用的十款文件加密软件

随着数字化转型的深入,企业数据安全成为了一个日益重要的议题。文件作为企业日常运营和知识管理的核心载体,其安全性直接关系到企业的商业机密和知识产权保护。为了应对日益严峻的数据安全挑战,市场上出现了多款功能强大、操作简便的文件加密…

从0开始搭建vue + flask 旅游景点数据分析系统(十):Element-UI消息插件封装

上一期我们使用过了elementui的Message来弹出消息提示框,但是上期的写法每次都要在vue文件中引入Message,并且要写不少重复代码,这一期就以插件方式将message封装到Vue的实例中。 创建plugins/message.js 这边加了判断的作用是,…

备忘录内容可以隐藏内容吗 备忘录内容在哪隐藏

在现代忙碌的生活中,备忘录成为了我们不可或缺的助手。它帮助我们记录重要的事项、想法和灵感,确保我们不会错过任何关键信息。然而,随着备忘录里积累的内容越来越多,很多人开始担心这些私密信息的安全。毕竟,如果备忘…

光影漫游者:品牌推广与产品发布的理想展示空间—轻空间

在竞争日益激烈的市场环境中,品牌推广和产品发布会不仅要传递信息,更要留下深刻印象。而光影漫游者作为创新展示空间的典范,以其现代感十足的外观设计与高科技内饰配置,为企业提供了一个完美的展示平台,最大限度地吸引…

Steinberg SpectraLayers Pro for Mac:专业音频频谱编辑的巅峰之作

Steinberg SpectraLayers Pro for Mac是一款专为音频专业人士设计的专业音频频谱编辑器,它以其强大的频谱编辑功能和直观的操作界面,在音频处理领域树立了新的标杆。该软件不仅为音频编辑工作带来了前所未有的精确度和灵活性,还极大地提升了音…

map/set和unordered_map/unordered_set的区别及使用情况

map/set和unordered_map/unordered_set的区别 容器底层数据结构是否有序实现版本复杂度迭代器map/set红黑树有序C98O(logN)双向迭代器unordered_map/unordered_set哈希表/散列表无序C11O(1)单向迭代器 unordered_set无序的(VS下) void uno…

文件长度超出芯片容量, 超出部份将被忽略!ch341a编程器报错解决方法

出现这个错误提示,说明你正在刷的是华硕主板的cap格式BIOS文件。 编程器不支持这种文件,需要转换成编程器专用版本BIOS文件。 华硕cap格式BIOS转编程器bios文件,转换工具下载地址:https://download.csdn.net/download/baiseled/88…

CentOS 7设置静态IP地址的详细指南

CentOS 7设置静态IP地址的详细指南 配置静态IP地址是服务器或虚拟机管理的重要步骤之一,特别是在需要稳定、可预测的网络环境时。本文将详细介绍如何在CentOS 7上设置静态IP地址,帮助确保你的系统网络配置符合需求。 1. 查看当前网络配置 在进行任何更…

【SpringMVC】详细了解SpringMVC中WEB-INF 目录资源,视图解析器和静态资源放行的使用。

目录 1. 回顾SpringMVC请求转发和重定向 2. WEB-INF资源目录 3. 视图解析器 4. 静态资源放行 1. 回顾SpringMVC请求转发和重定向 概念:在一个项目中功能非常多,也就意味着有非常多的Servlet,不同的Servlet的职不 同 ,而用户发起…

开源网络评论引擎Comentario

什么是 Comentario ? Comentario 是一个轻量级评论平台,您可以使用 Docker 轻松自行托管。这一切都是为了简单和隐私。Comentario 是用 Go 编写的,使其快速且易于使用。支持 Markdown 语法、Disqus 导入、评论投票、垃圾邮件和毒性过滤器、审…

【python】python中如何通过ddddocr来识别验证码,突破滑块移动验证

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…

zdpgo_cobra_req 新增解析请求体内容

zdpgo_cobra_req 使用Go语言开发的,类似于curl的HTTP客户端请求工具,用于便捷的测试各种HTTP地址 特性 1、帮助文档都是中文的2、支持常见的HTTP请求,比如GET、POST、PUT、DELETE等 下载 git clone https://github.com/zhangdapeng520/z…