5593人加入学习
(18人评价)
【旧版】Unreal初级课程 - 3D吃豆人

旧版课程,制作完成于2018-03-29,基于Unreal 4.18

价格 免费

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());
}

 

[展开全文]

授课教师

SIKI学院老师

课程特色

图文(1)
下载资料(1)
视频(30)

学员动态