赞
踩
这篇文章的内容为创建一个简易的AI。使用的引擎为UE4,C++加行为树结合
通过这篇文章能够简单熟悉使用UC++创建AI的一般流程。
1.选择第三人称(选择这个会有一个简易的玩家模版,我们主要讨论AI)
2.点击下一步
3.选择C++
4.其他无所谓(但是建议按照我的步骤来)
5.点击下一步
项目创建好的样子:
运行可以直接操作玩家,但是只是具备简单的跑动跳跃功能。
由于目前功能比较简单,我们只需要创建两个类
1.Character类,取名为MyAICharacter
2.AIController类,取名为MyAIController
这里选择public文件可以方便管理。
创建好一个类就会生成一个cpp文件和一个头文件。
.h文件也就是头文件,一般做声明用
cpp文件才是我们编写功能代码的地方
1.行为树
2.黑板
右键文件夹
Behaviortree和blackboard两个
创建完成:
1.打开我们创建好的行为树,点击黑板,选择我们创建好的黑板
2.打开黑板,黑板一般有一个默认的键值,selfActor,如果没有就自己创建,我们给他换个名字为TargetActor
Character和Controller都要创建
创建好的样子
1.打开角色蓝图,倒入mesh
2.绑定控制器
选择我们创建好的蓝图(注意不要直接选择C++类,C++类我们没有对行为树初始化)
2.编写Controller类代码
2.1头文件
#pragma once #include "CoreMinimal.h" #include "AIController.h" #include "MyAIController.generated.h" /** * */ class UBehaviorTree; UCLASS() class TEST_API AMyAIController : public AAIController { GENERATED_BODY() protected: virtual void BeginPlay() override;//重载父类方法 public: UPROPERTY(EditDefaultsOnly,Category="AI")//这里不知道的话可以先去了解下UE的宏反射 UBehaviorTree* MyBehaviorTree; };
2.2cpp文件
#include "MyAIController.h"
#include "AIController.h"
void AMyAIController::BeginPlay()
{
Super::BeginPlay();//加载父类
if (MyBehaviorTree)//防止空指针
{
RunBehaviorTree(MyBehaviorTree);//直接运行
}
}
3.编译
1.将编辑器关闭,ctrl+f5编译,他会自动打开
2.编译完成之后,打开controller蓝图可以看到我们在代码中生成的行为树选项
选择对应的行为树。
1.拉出箭头选择sequence节点
2.同样在sequence节点下拉出moveto和wait两个节点,但是要修改moveto节点的目标值为targetactor
#include "MyAIController.h" #include "AIController.h" #include "BehaviorTree/BlackboardComponent.h" #include "Kismet/GameplayStatics.h" #include "GameFramework/Character.h" void AMyAIController::BeginPlay() { Super::BeginPlay();//加载父类 if (ensure(MyBehaviorTree))//防止空指针 { RunBehaviorTree(MyBehaviorTree);//直接运行 } UBlackboardComponent* temBB = GetBlackboardComponent(); ACharacter *player = UGameplayStatics::GetPlayerCharacter(GetWorld(),0);//拿到玩家实例 if (ensure(temBB)) { temBB->SetValueAsObject("TargetActor", player); } }
到这里,我们的AI就能够识别玩家了,但是,这时候运行是不可能跟随我们的,为什么呢?因为我们还没有添加NavMeshBoundsVolume组件给地面
拖到场景中,是一个正方体,调节他的大小。
如何查看地面有没有烘焙好呢?点击左上角的show,打开navigation,绿色的就是ai能到达的地方
运行,发现AI能够随时跟随我们。
我们可以查看行为树的运行情况:
至此,一个简易的AI就完成了。
下一篇记录让AI增加巡逻,和视野功能。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。