본문으로 건너뛰기
Unreal Engine C++ 기초집LESSON 08

Pawn, Character, PlayerController

난이도초급
예상 시간40분
선수지식7강의 Collision

8강. Pawn, Character, PlayerController

1. 이번 강의에서 해결할 문제

입력 처리, 이동, UI 생성과 게임 오버가 모두 Character에 들어가 있습니다. 플레이어의 물리적 몸과 사람의 입력·화면 책임을 나눕니다.

2. 학습 목표

3. 핵심 개념

Pawn은 Controller가 Possess할 수 있는 Actor입니다. Character는 Capsule, Skeletal Mesh, CharacterMovement를 포함해 보행형 Pawn에 적합합니다. Controller는 물리적 몸과 분리된 의사결정 주체이며 PlayerController는 사람 입력과 로컬 UI를 연결하기 좋습니다.

탑다운 생존 게임은 CharacterMovement의 평면 이동을 재사용하므로 Character를 선택합니다. 모든 게임 규칙을 Character에 넣지는 않습니다. 체력은 Component, 점수는 Subsystem, 생성은 Spawner가 담당합니다.

4. 단계별 실습

파일 경로: Source/TopDownSurvival/Characters/SurvivalCharacter.h

SurvivalCharacter.h
#pragma once

#include "CoreMinimal.h"
#include "GameFramework/Character.h"
#include "SurvivalCharacter.generated.h"

UCLASS()
class TOPDOWNSURVIVAL_API ASurvivalCharacter : public ACharacter
{
GENERATED_BODY()

public:
ASurvivalCharacter();

void Move(const FVector2D& Input);
};

파일 경로: Source/TopDownSurvival/Characters/SurvivalCharacter.cpp

SurvivalCharacter.cpp
#include "Characters/SurvivalCharacter.h"

#include "GameFramework/CharacterMovementComponent.h"

ASurvivalCharacter::ASurvivalCharacter()
{
PrimaryActorTick.bCanEverTick = false;
GetCharacterMovement()->bOrientRotationToMovement = true;
GetCharacterMovement()->RotationRate = FRotator(0.0, 720.0, 0.0);
GetCharacterMovement()->bConstrainToPlane = true;
GetCharacterMovement()->SetPlaneConstraintNormal(FVector::UpVector);
}

void ASurvivalCharacter::Move(const FVector2D& Input)
{
AddMovementInput(FVector::ForwardVector, Input.Y);
AddMovementInput(FVector::RightVector, Input.X);
}

파일 경로: Source/TopDownSurvival/Player/SurvivalPlayerController.h

SurvivalPlayerController.h
#pragma once

#include "CoreMinimal.h"
#include "GameFramework/PlayerController.h"
#include "SurvivalPlayerController.generated.h"

UCLASS()
class TOPDOWNSURVIVAL_API ASurvivalPlayerController : public APlayerController
{
GENERATED_BODY()

protected:
virtual void BeginPlay() override;
};

Unreal Editor

  1. BP_SurvivalCharacter와 BP_SurvivalPlayerController 자식 Blueprint를 만듭니다.
  2. GameMode Blueprint에서 Default Pawn Class와 Player Controller Class를 지정합니다.
  3. Project Settings 또는 World Settings에서 해당 GameMode가 활성인지 확인합니다.

5. 코드가 동작하는 이유

CharacterMovementComponent가 입력 벡터를 프레임별 이동으로 처리하므로 Character 자체 Tick을 만들 필요가 없습니다. Controller와 Pawn을 분리하면 사망 후 다른 Pawn을 Possess하거나 UI를 유지하기 쉽습니다.

6. 자주 하는 실수와 해결법

7. 직접 실습

8. 이해 점검 질문 3개

9. 핵심 요약

MINI QUIZ

Pawn, Character, PlayerController 미니 퀴즈

선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.

0 / 2
  1. 문제 1“Pawn, Character, PlayerController”에서 다음 단계로 넘어가기 전에 확인할 핵심은 무엇인가요?
  2. 문제 2‘Character와 PlayerController 양쪽에서 같은 입력 바인딩’ 실수를 판단할 때 “Pawn, Character, PlayerController” 강의가 제시한 기준은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.

8강. Pawn, Character, PlayerController 미완료 상태