第 12 天:行为树(Behavior Tree),让 AI 更智能!

🎯 目标:

理解 Unreal Engine 5 行为树(Behavior Tree)
创建行为树(BT)和黑板(Blackboard)管理 AI 状态
使用任务(Task)让 AI 巡逻、追踪、攻击玩家

1️⃣ 什么是行为树(Behavior Tree)?

在 Unreal Engine 5 中,行为树(Behavior Tree,简称 BT) 是用于管理 AI 逻辑 的工具。它让 AI 可以通过 条件判断、任务执行、状态管理,做出更复杂的行为决策。

🔹 行为树的核心组件

组件作用
行为树(Behavior Tree,BT)AI 决策逻辑的主体
黑板(Blackboard,BB)存储 AI 的状态(目标、位置等)
任务(Task,BTTask)执行具体的 AI 行为
服务(Service,BTService)持续运行的逻辑(例如定期检查玩家位置)
装饰器(Decorator,BTDecorator)条件判断,控制 AI 是否执行某个任务

💡 行为树的本质是“决策树”,通过黑板存储数据,并使用任务、服务、装饰器来控制 AI 逻辑。

2️⃣ 创建 AI 行为树

🔹 新建 Behavior Tree 和 Blackboard

  1. 在 UE5 中,打开 “内容浏览器(Content Browser)”
  2. 右键 → 人工智能 → 创建 Behavior Tree(行为树),命名为 BT_EnemyAI
  3. 右键 → 人工智能 → 创建 Blackboard(黑板),命名为 BB_EnemyAI
  4. 双击 BT_EnemyAI,并将 Blackboard Asset 设为 BB_EnemyAI
    在这里插入图片描述

这样,我们就创建了 AI 的行为树,并连接了黑板用于存储状态数据。

3️⃣ 设置 AI 黑板(Blackboard)

黑板(Blackboard)是行为树的数据存储,负责 存储 AI 的目标、状态等信息

🔹 在 BB_EnemyAI 添加黑板键

  1. 打开 BB_EnemyAI
  2. 点击 “+” 添加新键
    • Key Name:TargetActor
    • Key Type:Object(Actor)
  3. 保存并关闭
    在这里插入图片描述

这样,黑板可以存储 AI 目标对象(玩家)!

4️⃣ 在 C++ 代码中绑定 AI 控制器和行为树

🔹 EnemyAIController 绑定行为树

📌 修改 EnemyAIController.h

#pragma once#include "CoreMinimal.h"
#include "AIController.h"
#include "BehaviorTree/BehaviorTree.h"
#include "BehaviorTree/BlackboardComponent.h"
#include "EnemyAIController.generated.h"UCLASS()
class MYGAME_API AEnemyAIController : public AAIController
{GENERATED_BODY()public:virtual void BeginPlay() override;private:UPROPERTY(EditDefaultsOnly)UBehaviorTree* EnemyBehaviorTree;
};

📌 修改 EnemyAIController.cpp

#include "EnemyAIController.h"
#include "BehaviorTree/BehaviorTree.h"
#include "Kismet/GameplayStatics.h"void AEnemyAIController::BeginPlay()
{Super::BeginPlay();// 动态加载 Behavior TreeUBehaviorTree* LoadedBehaviorTree = LoadObject<UBehaviorTree>(nullptr, TEXT("/Game/BT_EnemyAI.BT_EnemyAI"));if (LoadedBehaviorTree){EnemyBehaviorTree = LoadedBehaviorTree;RunBehaviorTree(EnemyBehaviorTree); //运行行为树}
}

这样,AI 角色会在游戏开始时自动运行行为树!

5️⃣ 让 AI 巡逻

🔹 在 BT_EnemyAI 添加巡逻任务

  1. 打开 BT_EnemyAI
  2. 右键 → 添加 Selector
  3. 在 Selector 下右键 → 添加 Sequence
  4. **在 Sequence下右键 → 添加Patrol **
  5. 再右键添加Wait
    在这里插入图片描述

这样,AI 角色会不断在随机点之间巡逻!
在这里插入图片描述

6️⃣ 让 AI 追踪玩家

🔹 在 BT_EnemyAI 添加追踪任务

  1. 在 Selector 下右键 → 添加 Sequence
  2. **在 Sequence下右键 → 添加MoveTo **
  3. 点击MoveTo节点,再细节面板修改如下属性
    在这里插入图片描述
  4. 右键Sequence添加装饰器→BlackBoard
  5. 点击添加的装饰器,在细节面板修改如下属性。
    在这里插入图片描述
  6. 修改另一个Sequence,最总效果如下
    在这里插入图片描述
    📌 修改 EnemyCharacter.cpp
void AEnemyCharacter::OnSeePlayer(APawn* Pawn)
{AEnemyAIController* AIController = Cast<AEnemyAIController>(GetController());if (AIController){UBlackboardComponent* BlackboardComp = AIController->GetBlackboardComponent();if (BlackboardComp){//设置黑板键的值BlackboardComp->SetValueAsObject(TEXT("TargetActor"), Pawn);}}
}

现在,AI 看到玩家后会自动追逐!
在这里插入图片描述

🎯 总结

创建行为树(BT)管理 AI 逻辑
使用黑板(BB)存储 AI 状态
编写行为树让 AI 巡逻 & 追踪
绑定 AI 控制器,让 AI 在 UE5 中执行行为树

🎮 明天我们将学习 AI 战斗系统,让敌人攻击玩家! 🚀

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

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

相关文章

公然上线传销项目,Web3 的底线已经被无限突破

作者&#xff1a;Techub 热点速递 撰文&#xff1a;Yangz&#xff0c;Techub News 今天早些时候&#xff0c;OKX 将上线 PI 的消息在圈内引起轩然大波&#xff0c;对于上线被板上钉钉为传销盘子的「项目」 &#xff0c;Techub News 联系了 OKX 公关&#xff0c;但对方拒绝置评…

Zabbix告警队列清理教程

文章来源&#xff1a;乐维社区 场景&#xff1a;由于网络故障导致&#xff0c;导致zabbix几百上千台机子告警&#xff0c;邮件失败多次尝试发送&#xff0c;导致堆积了很多告警队列&#xff0c;其他邮件产生了时延。一下是两种解决方法。 方法一&#xff1a; 1、查看alerts目…

windows使用cmake编译工程教学:libcurl库源码编译--qt6使用ftp服务--vcpkg下载的包cmake如何使用

windows使用cmake编译工程教学:libcurl库源码编译–qt6使用ftp服务–vcpkg下载的包cmake如何使用 前言 qt6中取消了对ftp协议的支持,所以如果要想在qt中使用tfp服务,需要接入第三方库,也就是libcurl,libcurl需要在本地进行编译,趁这个机会学习一下cmake的使用,记录一下…

网易易盾接入DeepSeek,数字内容安全“智”理能力全面升级

今年农历新年期间&#xff0c;全球AI领域再度掀起了一波革命性浪潮&#xff0c;国产通用大模型DeepSeek凭借其强大的多场景理解与内容生成能力迅速“出圈”&#xff0c;彻底改写全球人工智能产业的格局。 作为国内领先的数字内容风控服务商&#xff0c;网易易盾一直致力于探索…

42页精品PPT | 数字政府智慧政务大数据平台建设方案

这份《数字政府智慧政务大数据平台建设方案》PPT详细阐述了数字政府智慧政务大数据平台的建设背景、目标、架构以及实施策略。方案围绕解决当前政务服务中的痛点&#xff0c;如“互联网政务服务”推进中的数据共享难题、数据安全风险以及部门间业务流程整合等问题展开。 通过构…

CSS 小技巧 —— CSS 实现 Tooltip 功能-鼠标 hover 之后出现弹层

CSS 小技巧 —— CSS 实现 Tooltip 功能-鼠标 hover 之后出现弹层 1. 两个元素实现 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><title>纯 CSS 实现 Tooltip 功能-鼠标 hover 之后出现弹层</titl…

网络工程师 (34)生成树协议

前言 生成树协议&#xff08;Spanning Tree Protocol&#xff0c;STP&#xff09;是一种工作在OSI网络模型中第二层&#xff08;数据链路层&#xff09;的通信协议&#xff0c;其基本应用是防止交换机冗余链路产生的环路&#xff0c;确保以太网中无环路的逻辑拓扑结构&#xff…

基于CanMV IDE 开发软件对K210图像识别模块的开发

简介 CanMV IDE 是一款专为 K210 芯片设计的图形识别 Python 软件&#xff0c;它提供了强大的功能&#xff0c;帮助开发者轻松实现基于 K210 芯片的图形识别应用。无论你是初学者还是经验丰富的开发者&#xff0c;CanMV IDE 都能为你提供便捷的开发环境和丰富的资源。 硬件资…

linux的三剑客和进程处理

Linux三剑客&#xff1a; grep&#xff1a;查找 sed&#xff1a;编辑 awk&#xff1a;分析 grep - 正则表达式 [rootlocalhost ~]# grep ^a hello.txt abc grep - 忽略大小写&#xff0c;还有一些场景需要查询出来对应字符串所在的行号&#xff0c;方便我们快速在文件中定位字…

Python虚拟环境管理工具 pyenv

情景 我现在在部署一个python 项目&#xff0c;需要用到Python 3.10。但是我本地已经有了一个3.12解释器&#xff0c;有没有一种方法&#xff0c;可以管理python 环境&#xff0c;还可以随意切换。怎么做&#xff1f; window 安装pyenv-win 使用 PowerShell&#xff08;以管…

基于 PyTorch 的树叶分类任务:从数据准备到模型训练与测试

基于 PyTorch 的树叶分类任务&#xff1a;从数据准备到模型训练与测试 1. 引言 在计算机视觉领域&#xff0c;图像分类是一个经典的任务。本文将详细介绍如何使用 PyTorch 实现一个树叶分类任务。我们将从数据准备开始&#xff0c;逐步构建模型、训练模型&#xff0c;并在测试…

pytest测试专题 - 1.2 如何获得美观的测试报告

<< 返回目录 1 pytest测试专题 - 1.2 如何获得美观的测试报告 1.1 背景 虽然pytest命令的报文很详细&#xff0c;用例在执行调试时还算比较方便阅读和提取失败信息&#xff0c; 但对于大量测试用例运行时&#xff0c;可能会存在以下不足 报文被冲掉测试日志没法归档 …

压缩stl文件大小

1、MeshLab下载界面&#xff0c;从MeshLab下载适合自己系统的最新版本。 2、打开 MeshLab软件&#xff0c;将stl文件拖入其中。 3、 4、Percentage reduction参数即为缩放比例&#xff0c;根据自身想要将文件压缩到多大来。 然后点击apply 5、CtrlE弹出窗口保存文件后&…

FPGA 28 ,基于 Vivado Verilog 的呼吸灯效果设计与实现( 使用 Vivado Verilog 实现呼吸灯效果 )

目录 前言 一. 设计流程 1.1 需求分析 1.2 方案设计 1.3 PWM解析 二. 实现流程 2.1 确定时间单位和精度 2.2 定义参数和寄存器 2.3 实现计数器逻辑 2.4 控制 LED 状态 三. 整体流程 3.1 全部代码 3.2 代码逻辑 1. 参数定义 2. 分级计数 3. 状态切换 4. LED 输…

【云安全】云原生-K8S- API Server 未授权访问

API Server 是 Kubernetes 集群的核心管理接口&#xff0c;所有资源请求和操作都通过 kube-apiserver 提供的 API 进行处理。默认情况下&#xff0c;API Server 会监听两个端口&#xff1a;8080 和 6443。如果配置不当&#xff0c;可能会导致未授权访问的安全风险。 8080 端口…

DeepSeek的大模型介绍

文章目录 DeepSeek是什么DeepSeek平台使用DeepSeek的使用场景DeepSeek的本地部署 DeepSeek是什么 DeepSeek是一家2023/7月年成立的人工智能公司&#xff0c;致力于开发高效、高性能的生成式AI模型&#xff0c;在短短一年多的时间里推出了多款强大的开源模型&#xff0c;包括De…

问卷数据分析|SPSS实操之单因素方差分析

适用条件&#xff1a; 检验分类变量和定量变量之间的差异 分类变量数量要大于等于三 具体操作&#xff1a; 1.选择分析--比较平均值--单因素ANOVA检验 2. 下方填分类变量&#xff0c;上方为各个量表数据Z1-Y2 3. 点击选项&#xff0c;选择描述和方差齐性检验 4.此处为结果数…

信息收集-主机服务器系统识别IP资产反查技术端口扫描协议探针角色定性

知识点&#xff1a; 1、信息收集-服务器系统-操作系统&IP资产 2、信息收集-服务器系统-端口扫描&服务定性 一、演示案例-应用服务器-操作系统&IP资产 操作系统 1、Web大小写(windows不区分大小写&#xff0c;linux区分大小写) 2、端口服务特征(22就是linux上的服…

vmware安装win7

1、版本说明 vmware workstation 16 win7 X64 2、安装步骤 安装步骤有点独特&#xff0c;先配置虚拟机&#xff0c;然后再虚拟机的虚拟光驱里添加下载的win7。 配置完了之后&#xff0c;点击要运行的虚拟机&#xff0c;然后一直往下走就可以完成系统的安装。 3、配置系统以解…

【ThreeJS Basics 1-3】Hello ThreeJS,实现第一个场景

文章目录 环境创建一个项目安装依赖基础 Web 页面概念解释编写代码运行项目 环境 我的环境是 node version 22 创建一个项目 首先&#xff0c;新建一个空的文件夹&#xff0c;然后 npm init -y , 此时会快速生成好默认的 package.json 安装依赖 在新建的项目下用 npm 安装依…