2024/01/27 TIL

양우창·2025년 1월 27일

내일배움캠프 TIL

목록 보기
16/22

배운 내용

  1. PlayerController 이해하기
  • PlayerController란?
    • PlayerController는 플레이어 입력(키보드, 마우스, 게임패드)을 받아 해석하고, 이를 캐릭터나 오브젝트의 동작으로 변환하는 핵심 클래스.
    • 입력 로직과 캐릭터 동작 로직을 분리해 코드 관리를 용이하게 함.
    • 입력 흐름:
      • 입력 장치 → PlayerController가 해석.
      • PlayerController가 소유한 Pawn에 동작 명령 전달.
    • 멀티플레이에서는 각 플레이어가 고유한 PlayerController를 가져 입력이 충돌하지 않음.
  • PlayerController의 주요 기능
    • 입력 처리: 다양한 입력 장치 이벤트를 처리하며, SetupInputComponent()를 활용.
    • 카메라 제어: 시점 회전, 줌 동작.
    • HUD/UI와 상호작용: 버튼 클릭, 스킬 발동 등.
    • Possess/UnPossess: PlayerController가 Pawn을 소유하거나 소유 해제.

  1. PlayerController C++ 클래스 생성
  • PlayerController 클래스 생성
    • 언리얼 에디터에서 PlayerController 클래스를 상속받아 SpartaPlayerController 생성.
    • C++ 클래스에서 입력 로직과 관련된 멤버 변수를 선언.
UCLASS() 
class SPARTAPROJECT_API ASpartaPlayerController : public APlayerController
{
	GENERATED_BODY()
};
  • GameMode에 PlayerController 적용
    • PlayerControllerClass를 새로 만든 SpartaPlayerController로 설정해 게임에서 적용.

  1. Enhanced Input System의 이해
  • Enhanced Input System란?
    • 입력 설정을 전역 Input 대신 Input Mapping Context (IMC)Input Action (IA)으로 관리.
    • 상황에 따라 입력 모드를 동적으로 변경 가능.
  • Input Action 생성
    • 특정 동작(이동, 점프, 카메라 회전 등)을 정의.
    • Value Type으로 Bool, Axis1D, Axis2D 등을 선택.
    • Trigger로 Pressed, Released 설정 가능.
  • Input Mapping Context 설정
    • 여러 Input Actions를 모아 매핑 관리.
    • 키보드와 마우스 입력을 IA에 매핑하고, 필요 시 Modifier(입력 값 반전, 배율 조정) 설정.
  1. PlayerController에서 IMC 활성화
  • Local Player Subsystem 활용
    • UEnhancedInputLocalPlayerSubsystem을 통해 IMC를 활성화.
    • 코드 예시 :
void ASpartaPlayerController::BeginPlay()
{
    Super::BeginPlay();
    if (ULocalPlayer* LocalPlayer = GetLocalPlayer())
    {
        if (UEnhancedInputLocalPlayerSubsystem* Subsystem = LocalPlayer->GetSubsystem<UEnhancedInputLocalPlayerSubsystem>())
        {
            if (InputMappingContext)
            {
                Subsystem->AddMappingContext(InputMappingContext, 0);
            }
        }
    }
}
  • IMC 활성화 확인

    • IA 이벤트를 Blueprint로 연결해 테스트.
    • 입력 동작이 정상적으로 작동하는지 Print String 등을 활용해 확인 가능.

      배운 점

  • PlayerController는 입력 처리와 캐릭터 동작을 분리하며 게임 로직의 중심을 담당.

  • Enhanced Input System은 기존 입력 방식보다 구조적이고 확장 가능성이 높음.

  • C++과 Blueprint를 적절히 조합해 입력을 효율적으로 관리할 수 있음.

profile
내배캠 언리얼 엔진 1기

0개의 댓글