언리얼 C++ 프로그래밍

[언리얼 C++] Pawn 커스터마이즈

언린이 2021. 6. 24. 19:51

언리얼 엔진에서 Pawn이란, 실제 플레이어 또는 AI의 제어를 받도록 디자인된 액터를 의미합니다.

 

 

1. 클래스 생성

우선, Pawn을 커스터마이즈 하기 위해서 Pawn 클래스를 상속받는 MyPawn 클래스를 생성해줍니다.

 

 

2. Pawn 객체 생성 및 설정

AMyPawn::AMyPawn()
{
	// 이 폰을 가장 빠른 번호의 플레이어가 조종하도록 설정합니다.
	AutoPossessPlayer = EAutoReceiveInput::Player0;
    
    // 무언가를 붙일 더미 루트 컴포넌트를 만듭니다.
	RootComponent = CreateDefaultSubobject<USceneComponent>(TEXT("RootComponent"));

	// 카메라와 메쉬 오브젝트를 만듭니다.
	UCameraComponent* OurCamera = CreateDefaultSubobject<UCameraComponent>(TEXT("OurCamera"));
	Mesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("Mesh"));

	// 루트 컴포넌트에 카메라와 메쉬 오브젝트를 붙입니다.
	OurCamera->SetupAttachment(RootComponent);
	OurCamera->SetRelativeLocation(FVector(-250.0f, 0.0f, 250.0f));
	OurCamera->SetRelativeRotation(FRotator(-45.0f, 0.0f, 0.0f));
    Mesh->SetupAttachment(RootComponent);
}

MyPawn 객체를 월드에 스폰해주고나서 해당 객체가 플레이어의 입력에 반응하도록 클래스의 생성자에서 설정해 줍니다. 그리고 객체들을 붙일 더미 루트 컴포넌트를 생성해준 후, 카메라와 메쉬 오브젝트를 생성하여 루트 컴포넌트에 붙여줍니다. 이렇게 하면 붙여준 메쉬 오브젝트의 모양을 띈 객체를 플레이어가 컨트롤 할 수 있습니다.

 

 

3. 플레이어 입력 받기

// Called to bind functionality to input
void AMyPawn::SetupPlayerInputComponent(class UInputComponent* InputComponent)
{
    Super::SetupPlayerInputComponent(InputComponent);

}

Pawn 클래스에 존재하는 SetupPlayerInputComponent 함수를 재정의하여 플레이어에게서 받는 입력을 통해 컨트롤하고 있는 Pawn 객체를 움직이는 등 변화를 줄 수 있습니다.

 

단지, 함수를 재정의한다고 하여 플레이어의 입력을 받을 수 있는 것은 아닙니다.

언리얼 엔진 에디터에서 프로젝트의 입력 세팅 환경설정을 해주어야 합니다.

이 내용은 다음 글에서 다루도록 하겠습니다.