Unreal Engine 5行为树实战:让AI更智能
创作时间:
作者:
@小白创作中心
Unreal Engine 5行为树实战:让AI更智能
引用
CSDN
1.
https://blog.csdn.net/m0_37643873/article/details/145594226
在Unreal Engine 5中,行为树(Behavior Tree)是用于管理AI逻辑的重要工具。通过条件判断、任务执行和状态管理,可以让AI做出更复杂的行为决策。本文将详细介绍如何创建和使用行为树,让AI能够巡逻、追踪和攻击玩家。
什么是行为树(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逻辑。
创建AI行为树
新建 Behavior Tree 和 Blackboard
- 在UE5中,打开“内容浏览器(Content Browser)”
- 右键 → 人工智能 → 创建 Behavior Tree(行为树),命名为 BT_EnemyAI
- 右键 → 人工智能 → 创建 Blackboard(黑板),命名为 BB_EnemyAI
- 双击 BT_EnemyAI,并将 Blackboard Asset 设为 BB_EnemyAI
✅这样,我们就创建了AI的行为树,并连接了黑板用于存储状态数据。
设置AI黑板(Blackboard)
黑板(Blackboard)是行为树的数据存储,负责存储AI的目标、状态等信息。
在 BB_EnemyAI 添加黑板键
- 打开 BB_EnemyAI
- 点击“+”添加新键
- Key Name:TargetActor
- Key Type:Object(Actor)
- 保存并关闭
✅这样,黑板可以存储AI目标对象(玩家)!
在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 Tree
UBehaviorTree* LoadedBehaviorTree = LoadObject<UBehaviorTree>(nullptr, TEXT("/Game/BT_EnemyAI.BT_EnemyAI"));
if (LoadedBehaviorTree)
{
EnemyBehaviorTree = LoadedBehaviorTree;
RunBehaviorTree(EnemyBehaviorTree); //运行行为树
}
}
✅这样,AI角色会在游戏开始时自动运行行为树!
让AI巡逻
在 BT_EnemyAI 添加巡逻任务
- 打开 BT_EnemyAI
- 右键 → 添加 Selector
- 在 Selector 下右键 → 添加 Sequence
- 在 Sequence下右键 → 添加Patrol
- 再右键添加Wait
✅这样,AI角色会不断在随机点之间巡逻!
让AI追踪玩家
在 BT_EnemyAI 添加追踪任务
- 在 Selector 下右键 → 添加 Sequence
- 在 Sequence下右键 → 添加MoveTo
- 点击MoveTo节点,再细节面板修改如下属性
- 右键Sequence添加装饰器→BlackBoard
- 点击添加的装饰器,在细节面板修改如下属性
- 修改另一个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战斗系统,让敌人能够攻击玩家!🚀
热门推荐
高阶智驾vs普通智驾:全方位解析二者差异
揭秘游戏延迟:如何检测并优化Ping值?
10个跨界方法论:产品用的上,启发互联网项目(含案例)
人像摄影入门指南:五大实用技巧助你拍出专业级作品
狮头鹅养殖全攻略:从育雏到出栏的科学管理
狮头鹅养殖技术:从孵化到出栏的全程指南
知乎前端面试:解析与职业发展策略
奥特曼传奇英雄2泰迦煜坤怎么样 泰迦煜坤技能技巧介绍
新质观察|6G×具身智能:开启人类社会智能化的新时代
狼人杀游戏规则及玩法详解
青少年的圆肩驼背如何化解
郑智人生大赢家,夫妻伉俪情深,儿子进了国家队,最大遗憾没踢过世界杯
如何缓解针灸后的疼痛
玩游戏“晕3D”怎么办?专家:不建议吃“晕车药”,有这三招
中国盛世的歷史回顧:探索幾個輝煌朝代的成就與影響
原生鸿蒙之夜:HarmonyOS NEXT发布,展示自主创新新突破
长期大量摄入糖分,危害不小,5类疾病都和糖有关,做好6点预防
司马懿与司马家的权力崛起:历史的必然还是巧合?
鸡蛋玉米牛奶早餐能一起吃吗
登山杖选购指南
2025年澳大利亚大学计算机专业排名一览表
NBA传奇球星德怀恩·韦德:迈阿密热火队的永恒传奇
高考志愿填报付费咨询指导服务的法律解读
看,这就是2035年的广州花都① | 规划解读——北部增长极这样建
上海机场联络线(虹桥2号航站楼站—浦东1号2号航站楼站)将于近期开通初期运营
虹桥到浦东的机场联络线启用在即,上海这些重点区域将直接受益
怎么形容老鹰捕食:精准描绘猛禽狩猎瞬间的技巧!
泰森VS霍利菲尔德又来?谁都不愿错过史诗的结局
数据存储的性能优化方法有哪些?
涉外护士德国留学条件是什么?如何满足这些要求?