게임 개발 (언리얼 엔진)

UE4 생존게임 제작 - 10 (보스 몬스터 제작)

언린이 2020. 11. 8. 19:10

1. 보스 몬스터 메시 선정 및 제작

 

보스 몬스터는 게임의 배경이 아프리카인 점을 고려하여 코끼리로 하였습니다.

 

AElephant::AElephant()
{
	PrimaryActorTick.bCanEverTick = true;

	// 스켈레탈 메시를 얻어온다
	static ConstructorHelpers::FObjectFinder<USkeletalMesh> MeshAsset(TEXT("SkeletalMesh'/Game/AfricanAnimalsPack/Elephant/Meshes/SK_Elephant.SK_Elephant'"));

	// 스켈레탈 메시가 유효할 경우 메시 적용
	if (MeshAsset.Succeeded())
		GetMesh()->SetSkeletalMesh(MeshAsset.Object);

	
	// 애니메이션 블루프린트 클래스를 얻어온다
	static ConstructorHelpers::FClassFinder<UElephantAnim> AnimAsset(TEXT("AnimBlueprint'/Game/Animal/BPElephantAnim.BPElephantAnim_C'"));

	// 블루프린트 클래스가 유효할 경우 적용
	if (AnimAsset.Succeeded())
		GetMesh()->SetAnimInstanceClass(AnimAsset.Class);

	// 박스 컴포넌트 생성
	CollisionBox = CreateDefaultSubobject<UBoxComponent>(TEXT("CollisionBox"));

	// 박스 컴포넌트를 메시의 소켓에 달아준다
	CollisionBox->SetupAttachment(GetMesh(), TEXT("ELEPHANT_-Spine_Socket"));

	// 박스 컴포넌트의 프로파일을 몬스터의 프로파일로 설정한다
	CollisionBox->SetCollisionProfileName(TEXT("Animal"));

	// 일단 임의로 크기를 잡아준 것, 크기는 블루프린트로 수정할 것임
	CollisionBox->SetBoxExtent(FVector(20.f, 20.f, 20.f));

	AttackBox->SetupAttachment(GetMesh(), TEXT("ELEPHANT_-Queue-de-cheval-_Socket"));
	AttackBox->SetBoxExtent(FVector(20.f, 20.f, 20.f));

	AnimalName = TEXT("Elephant");
}

 

void AElephant::BeginPlay()
{
	Super::BeginPlay();
	
	ElephantAnim = Cast<UElephantAnim>(GetMesh()->GetAnimInstance());

	// 델리게이트에 생성한 함수 등록
	AttackBox->OnComponentBeginOverlap.AddDynamic(this, &AAnimal::AttackBeginOverlap);
	AttackBox->OnComponentEndOverlap.AddDynamic(this, &AAnimal::AttackEndOverlap);
}

 

PredatorAnimal 클래스를 상속받도록 하여 보스 몬스터의 C++ 클래스를 만들었습니다.

생성자에서 메시와 애니메이션 블루프린트 클래스를 적용하였고, 플레이어의 공격을 감지하는 박스 컴포넌트를 생성하여 메시에 부착해주었고 몬스터의 공격을 위한 박스 컴포넌트 또한 메시에 부착해주었습니다. 그리고 나서 AttackBox 컴포넌트의 Overlap 델리게이트에 함수를 등록해주었습니다.

마지막으로 보스 몬스터의 정보를 데이터 테이블을 통해 불러오기 위해서 이름을 지정해주었습니다.

 

 

 

스켈레탈 메시와 충돌 감지를 위한 박스 컴포넌트를 부착한 모습입니다.

 

 

2. 보스 몬스터 애니메이션 제작

 

보스 몬스터의 애니메이션 또한 AnimalAnim 클래스를 상속받아서 제작하였습니다.

 

 

 

블렌드 포즈를 이용해 각각의 애니메이션을 설정하였습니다.

 

 

3. 보스 몬스터 Predator AI Controller 적용

 

만들어두었던 Predator AI Controller를 보스 몬스터에 적용하였습니다.

이제 보스 몬스터 또한 패트롤을 하다가 플레이어가 감지되면 공격을 시작할 것입니다.

 

 

 

보스 몬스터가 공격하는 모습을 확인할 수 있습니다.

 

 

다음에 해야할 일

 

몬스터 공격 충돌 시스템 수정