Enemy.cpp
void AEnemy::BeginPlay()
{
Super::BeginPlay();
// 刚开始的速度太大了,设定初始的速度小一些
GetCharacterMovement()->MaxWalkSpeed = 150.0f;
}
void AEnemy::Killed()
{
if (bIsDead)
{
return;
}
bIsDead = true;
GetCharacterMovement()->MaxWalkSpeed = 300.0f;
// 获得AI
AAIEnemy* AI = Cast<AAIEnemy>(GetController());
// 让敌人回家
AI->GoHome();
}
void AEnemy::ReArm()
{
bIsDead = false;
GetCharacterMovement()->MaxWalkSpeed = 150.0f;
if (bIsVulnerable)
{
SetInVulnerable();
}
// 重新出来
SetMove(true);
}
AIEnemy.h
#include "PacManGameModeBase.h"
UCLASS()
class PACMAN_API AAIEnemy : public AAIController
{
GENERATED_BODY()
private:
APacManGameModeBase* GameMode;
};
AIEnemy.cpp
#include "Kismet/GameplayStatics.h"
void AAIEnemy::OnPossess(class APawn* InPawn)
{
Super::OnPossess(InPawn);
// 获取GameMode // UGameplayStatics 需要引入 #include "Kismet/GameplayStatics.h"
GameMode = Cast<APacManGameModeBase>(UGameplayStatics::GetGameMode(this));
}
void AAIEnemy::OnMoveCompleted(FAIRequestID RequestID, const FPathFollowingResult & Result)
{
// 当敌人不是死亡的时候 并且 游戏不是暂停的时候
if (!Bot->bIsDead &&GameMode->GetCurrentState() != EGameState::EPause)
{
// 找新的随机点
SearchNewPoint();
}
}
void AAIEnemy::StopMove()
{
//StopMovement();
MoveToLocation(Bot->GetActorLocation());
}