选中C++类,点击添加新项
新建C++类---继承自Character类---Enemy
#include "Public/Enemy.h"
新建C++类--- 需要勾选【显示所有类】里搜索---AIController
Enemy.h
Enemy.cpp
是肉体
AIEnemy.h
AIEnemy.cpp
是灵魂,用AI来控制
#include "Public/AIEnemy.h"
Enemy 脚本
继承自Character的类上有CapsuleComponent组件
只需要写控制样子的组件
Enemy.h
#include "Components/StaticMeshComponent.h"
UPROPERTY(VisibleAnywhere,Category=body)
UStaticMeshComponent* EnemyBody;
Enemy.cpp
#include "UObject/ConstructorHelpers.h"
AEnemey::AEnemy()
{
PrimaryActorTick.bCanEverTick = true;
EnemyBody=CreateDefaultSubobject<UStaticMeshComponent>(TEXT("Body"));
static ConstructorHelpers::FObjectFinder<UStaticMesh> CylinderObj(TEXT("'/Game/StarterContent/Shapes/Shape_Cylinder'"));
if(CylinderObje.Succeeded())
{
EnemyBody->SetStaticMesh(CylinderObj.Object);
}
EnemyBody->SetRelativeScale3D(FVector(0.7f, 0.7f, 1.0f));
EnemyBody->SetupAttachment(RootComponent);
GetCapsuleComponent()->SetCapsuleRadius(40.0f);
GetCapsuleComponent()->SetCapsuleHalfHeight(50.0f);
}
// 使用GetCapsuleComponent,需要引入头文件:#include "Components/CapsuleComponent.h"
static ConstructorHelpers::FObjectFinder<UStaticMesh> CylinderObj(TEXT("'/Game/StarterContent/Shapes/Shape_Cylinder'"));
#include "Components/StaticMeshComponent.h"
public:
UPROPERTY(VisibleAnywhere,Category=Body)
UStaticMeshComponent* EnemyBody;
#include "UObject/ConstructorHelpers.h"
#include "Components/CapsuleComponent.h"
AEnemy::AEnemy()
{
// 显示组件
EnemyBody = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("Body"));
// 创建样子
// 找到对应的材质
static ConstructorHelpers::FObjectFinder<UStaticMesh> CylinderObj(TEXT("'/Game/StarterContent/Shapes/Shape_Cylinder'"));
// 成功找到就
// Succeeded()需要加括号
if (CylinderObj.Succeeded())
{
// 指定它的样子
EnemyBody->SetStaticMesh(CylinderObj.Object);
}
// 设置它的大小
EnemyBody->SetRelativeScale3D(FVector(0.7f, 0.7f, 1.0f));
// 绑定到根组件上
// AttachTo 过时了,换成:SetupAttachment
EnemyBody->SetupAttachment(RootComponent);
// 设置碰撞体的大小
// 使用GetCapsuleComponent,需要引入头文件:#include "Components/CapsuleComponent.h"
GetCapsuleComponent()->SetCapsuleRadius(40.0f);
GetCapsuleComponent()->SetCapsuleHalfHeight(50.0f);
}