虚幻5|AI行为树,进阶篇
一,打开敌人的角色蓝图,编写以下蓝图,该蓝图只是创建一个敌人并非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判断条件,无论是否为真假,后面的都执行,而唯有自己为真执行自己,为假,自己单独不执行

结束,我们运行一下
相关文章:
虚幻5|AI行为树,进阶篇
一,打开敌人的角色蓝图,编写以下蓝图,该蓝图只是创建一个敌人并非ai行为树 1.编写蓝图 2.打开主界面,创建一个导航网格体积,上一章都有讲,在添加体积这里面,找到导航网格体积,点击创…...
在 Spring Boot 中配置 Tomcat 监听多个端口
在现代微服务架构中,应用程序可能需要监听多个端口,以支持不同的服务或协议。Spring Boot 提供了灵活的配置选项,使得这一需求变得简单而高效。本文将介绍如何在 Spring Boot 中配置 Tomcat 以监听多个端口,并简要说明其中一些关键…...
stm32f407新建项目工程及烧录
1、新建一个文件夹,打开keil5将项目工程放入文件夹中 2、弹出选择对应型号设备 3、弹出选择对应库 可以看见出现下图:感叹号表示有错 最后如图所示:点击ok就行了 4、创建对应的文件夹存放文件 4、建立main.c 5、添加对应的设置 最后写一个空白…...
c++中加不加const的值传递和引用传递的区别
文章目录 可以修改参数值的比较值传递(int x)和引用传递(int &x)使用const不修改参数值的比较值传递(const int x)和引用传递(const int &x)1. const int x 示例2. const int &x 示例 可以修改参数值的比较值传递(int x)和引用传递(int &x) #include <iost…...
Qt的窗口设置
本文介绍Qt的窗口设置。 采用Qt开发界面程序,会涉及到窗口的设置,如窗口标题栏是否显示,是否有最小,最大化按钮等,窗口当前显示最小化,最大化等。本文简要介绍常用的窗口设置方法。 1.窗口属性 窗口属性…...
51单片机-LCD1602显示屏
简介 是一个液晶显示屏,通过电压对显示区域进行控制,有电就显示。 能够同时显示32个字符,分为两行,一行显示16个字符。可以显示的内容只能是字母、数字或者一些特殊符号。 使用ASCII码来让LCD1602来显示对应的字符。 电路图 …...
多模态分析代理 MAIA:多智能体解决 视觉模型 黑盒问题
多模态分析代理 MAIA:多智能体解决 视觉模型 黑盒问题 论文:https://arxiv.org/pdf/2404.14394 代码:https://github.com/multimodal-interpretability/maia 提出背景 神经网络方法提取的特征,没有可解释性。 数据在通过多个层…...
AT360-6T杭州中科微单频高精度授时模块场景应用
AT360-6T是一款高性能多系统卫星定位授时模块,基于自主研发的北斗多系统SOC芯片,可以同时接收中国的BDS(北斗二号和北斗三号)、美国的GPS、俄罗斯的GLONASS、欧盟的 GALILEO 和日本的QZSS等多个卫星导航系统的GNSS信号来实现多系统联合定位授时ÿ…...
Python酷库之旅-第三方库Pandas(081)
目录 一、用法精讲 336、pandas.Series.str.rpartition方法 336-1、语法 336-2、参数 336-3、功能 336-4、返回值 336-5、说明 336-6、用法 336-6-1、数据准备 336-6-2、代码示例 336-6-3、结果输出 337、pandas.Series.str.slice方法 337-1、语法 337-2、参数 …...
C语言基础⑩——构造类型(结构体)
一、数据类型分类 1、基本类型 整数型 短整型:short(2个字节);整型(默认):int(4个字节);长整型:long(8个字节)…...
宝兰德荣获openEuler项目群青铜捐赠人称号,共筑开源生态繁荣新篇章
近日,开放原子开源基金会正式公布了新增捐赠人名单,宝兰德凭借在开源领域的卓越贡献与深厚实力,被授予openEuler项目群青铜捐赠人称号。 开放原子开源基金会是致力于推动全球开源事业发展的非营利机构,于2020年6月在北京成立。开放…...
【Python单元测试】学习笔记3
文章目录 08.PyTest框架什么是PyTestPyTest的优点PyTest的测试环境PyTest常用参数跳过测试 09.PyTest fixture基础PyTest fixture定义和使用引用多个Fixture 10. conftest.pyconftest.py的用途 11. 参数化测试用例为什么需要参数化测试用例使用parameterizer插件实现使用pytest…...
OpenSSL源码编译及Debug
** 1. 环境 Linux 5.19.0-14-generic 22.04.1-Ubuntu 2. 所需工具 gcc version 11.3.0 (Ubuntu 11.3.0-1ubuntu1~22.04) cmake version 3.22.1 3. 步骤 3.1 获取openssl源码 方法可以git clone获得源码,或者直接去GitHub上下载压缩包,GitHub网址…...
go之goburrow/modbus 学习
goburrow/modbus 是一个用Go语言实现的Modbus协议库,提供了Modbus主机(Master)和从机(Slave)的实现,支持两种主要的Modbus传输模式:Modbus TCP和Modbus RTU。 功能介绍 1. 支持的传输模式 Mod…...
开放词汇目标检测(Open-Vocabulary Object Detection, OVOD)算法是什么?
开放词汇目标检测(Open-Vocabulary Object Detection, OVOD)算法是什么? 随着计算机视觉技术的快速发展,目标检测(Object Detection)已经在各种应用场景中得到了广泛的应用。然而,传统的目标检…...
【教程】Ubuntu给pycharm添加侧边栏快捷方式
转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 以下教程不仅限于pycharm,其他软件也是一样操作 1、进入到pycharm的目录,先通过命令行打开pycharm: ./bin/pycharm…...
三个月外贸小白好迷茫,该何去何从?
最近看到一个共性的问题,也许对于大多数外贸新人来说,都有过这样的困扰和无力感,也许对于每一个没有强大背景的外贸小伙伴来说,可能都是这样一路成长起来的。 大家好,我是一名普通二本英专生,八月中旬入职…...
MySQL数据库——基本查询(Create)
CRUD:Create(创建)Retrieve(读取)Update(更新)Delete(删除) 1.Create ①单行数据全列插入 insert [into] table_name [(colume[,colume]……)] values (value_list) […...
spring-security-1-快速入门
1 功能 身份认证(authentication)授权(authorization)防御常见攻击 身份认证:常见账号密码登录,短信登录 授权:什么样的角色,能看见什么菜单,能访问哪些接口。 2 pom <dependency><groupId>org.springf…...
5 大场景上手通义灵码企业知识库 RAG
大家好,我是通义灵码,你的智能编程助手!最近我又升级啦,智能问答功能全面升级至 Qwen2,新版本在各个方面的性能和准确性都得到了显著提升。此外,行间代码补全效果也全面优化,多种编程语言生成性…...
如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...
AGain DB和倍数增益的关系
我在设置一款索尼CMOS芯片时,Again增益0db变化为6DB,画面的变化只有2倍DN的增益,比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析: 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...
Redis:现代应用开发的高效内存数据存储利器
一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发,其初衷是为了满足他自己的一个项目需求,即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源,Redis凭借其简单易用、…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
为什么要创建 Vue 实例
核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...
python爬虫——气象数据爬取
一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用: 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests:发送 …...
Modbus RTU与Modbus TCP详解指南
目录 1. Modbus协议基础 1.1 什么是Modbus? 1.2 Modbus协议历史 1.3 Modbus协议族 1.4 Modbus通信模型 🎭 主从架构 🔄 请求响应模式 2. Modbus RTU详解 2.1 RTU是什么? 2.2 RTU物理层 🔌 连接方式 ⚡ 通信参数 2.3 RTU数据帧格式 📦 帧结构详解 🔍…...
