UE5行为树实战:让AI巡逻与追踪玩家
创作时间:
作者:
@小白创作中心
UE5行为树实战:让AI巡逻与追踪玩家
引用
CSDN
1.
https://blog.csdn.net/m0_37643873/article/details/145594226
在游戏开发中,AI行为树(Behavior Tree)是实现智能NPC行为的关键技术。本文将详细介绍如何在Unreal Engine 5中创建和使用行为树,让AI能够巡逻、追踪和攻击玩家。
目标
- 理解Unreal Engine 5的行为树(Behavior Tree)
- 创建行为树(BT)和黑板(Blackboard)管理AI状态
- 使用任务(Task)让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中执行行为树
热门推荐
小提琴手指保健操,拯救僵硬手指
中科院团队揭示气候变化对淡水生态系统影响,推进水生植被恢复
能量逐级传递,生态环环相扣:揭秘食物链的工作原理
首证分解者多样性减缓干旱影响,为森林管理提供新思路
热能动力学:驱动现代工业的能源转换科学
脑中风患者护理培训,专家教你这样做
年轻人脑中风发病率飙升,最新研究揭示城乡差异与风险因素
中老年人防脑中风秘籍:这些预防要点请收好
中风年轻化,冬季如何护脑?
银保监会&中保协:如何高效投诉保险公司?
投诉保险公司前,先看看它的偿付能力、理赔处理和客户服务
厄瓜多尔象牙果:以“植物象牙”替代真象牙,兼顾经济与环保
长生生物疫苗事件再发酵,如何确保疫苗安全?
智慧农业引领绿色革命,实现资源高效与生态平衡
中科院研究揭示:极端高温削弱全球陆地固碳能力
中国三大旗舰物种保护见成效,开创保护区外保护新模式
乔羽逝世:他的三首经典歌曲,唱响了几代人的爱国情
智能手机处理器技术详解:从架构到主频
三首经典歌曲的诞生:刘炽、乔羽等大师的创作故事
钓鱼必备:四种浮漂形状的使用场景详解
飞铅钓法:简单调整铅坠位置,提升野钓效果
孙俪主演《三十九二十八》:一部不一样的中年危机剧
揭秘上海“沪”与广西“桂”:两个简称背后的历史故事
揭秘北京简称“京”的前世今生
解密四川重庆简称:巴蜀大地的历史文化密码
唐太宗灵隐寺题字:一段孝道与信仰交融的佳话
灵隐寺题字背后的佛教文化密码
灵隐寺的神秘对联:李世民的祈愿与人生智慧
孙俪再演女警,《乌云之上》以女性视角诠释悬疑刑侦
转型现代剧,孙俪用演技展现女性力量