Unreal 5

C++ 에서 PlayerContoller 클래스 와 GameMode 클래스 구현 및 IA,IMC 생성 및 적용

Turtle_Jun 2025. 7. 13. 01:52

이번엔 PlayerController 클래스를 생성하여 해당 클래스에서 입력을 구현하여 플레이시 입력이 동작하는 지 확인을 위한 Print String을 출력 해본다.

 

 

PlayerController : 

입력 (키보드, 마우스, 패드 등)을 받아 동작을 하도록 하는 클래스

 

Input Mapping Context (IMC) : 를 이용해 IA(인풋 액션) 들을 어떤 입력을 받을지 구현

Input Action (IA) : 입력 액션으로 해당 입력값 형태(floats, Vector2D, Vector)와 트리거,모디파이 등 을 설정

 

 

1. C++ Player Controller 클래스 생성 

 

SpartaPlayerController 를 생성 후 이를 기반으로 한 블루프린트를 생성하여 한번 래핑해준다 (관리 용이함)

 

이후 점프, 이동, 카메라 제어에 필요한 Look 을 위한 IA(입력액션) IMC(입력 매핑 컨텍스트)를 생성하여 준다.

 

2. IA, IMC 에셋 생성

 

각 에셋들의 값은 아래와 같이 설정해준다.

 

2-1. IA_Move

W,A,S,D 앞뒤좌우 로 이동하기 위해 X,Y 축으로 입력을 받기 위해 Axis2D (Vector 2D) 로 설정한다.

 

2-2. IA_Jump

점프는 Space 바를 입력받아 누르는 입력(True/False) 값만 있을 예정으로 Digital (bool) 로 설정한다.

 

2-3. IA_Look

마우스의 상하좌우 X,Y 좌표 값을 받기 위해 Axis2D(Vector2D)로 설정해준다.

 

2-4. IA_Sprint

왼쪽 Shift 키 입력을 통해 제어를 하기위한 입력 액션으로 Jump와 마찬가지로 Digital ( bool ) 로 설정해준다.

 

2-5. IMC_Character (입력 매핑 컨텍스트)

입력 액션(IA)들을 어떤 입력(키보드, 마우스, 패드)을 받을 지 설정해주는 에셋이다.

 

    2-5-1) IA_Move ( 상,하,좌,우 )

W - 이동의 앞을 담당

스위즐 입력 축 값 : Y축 매핑에 용이 한 모디파이어

정렬 : XZY 로 X 가 기본적으로 액터의 앞을 가르킴

 

S - 뒤로 이동

정렬 : XZY 로 정렬 후 W의 반대 방향으로 입력을 받기 위해 부정(Negate) 설정

 

A - 왼쪽 이동

정렬 은 기본 세팅 YXZ로 그냥 놔둔다.

X,Y 좌표로 왼쪽이동은 -를 의미하므로 모디파이어로 부정 설정

 

D - 오른쪽 이동
X,Y 좌표 이동 오른쪽은 + 로 그냥 스위즐 입력 축 값으로만 설정

 

    2-5-2) IA_Jump (점프)

 

 

스페이스 바 입력을 받는 단순 키 입력

 

    2-5-3) IA_Look ( 카메라 회전 )

마우스를 이용한 카메라 제어를 위해 마우스 XY 2D 축으로 설정

Y 축은 마우스가 위로 갈 시 카메라도 아래로 가게 되어서 Y축을 부정(Negate) 로 설정

 

    2-5-4) IA_Sprint ( 가속 )

 키보드 입력으로 왼쪽 Shfit 로 설정한다.

 

3. C++ 에서 PlayerController 클래스 구현 및 GameMode 클래스 설정

    3-1) SpartaPlayerController.h

   

    3-2) SpartaPlayerContorller.cpp

    SpartaPlayerController.cpp 에서

ULocalPlayer* LocalPlayer = GetLocalPlayer() 으로 로컬 플레이어(사용자)를 가져온다.

UEnhancedInputLocalPlayerSubsystem* SubSystem 을 LocalSubSystem으로 가져와 해당 서브 시스템에 직접 만든 InpuMappingContext(IMC) 를 할당 해주기 위한 설정을 한다.

 


게임 모드 클래스 생성

게임 모드를 원하는 프로젝트 세팅에서 설정해주면 해당 게임모드가 지원하는 플레이어 컨트롤러 및 다양한 모드 설정 값을 구현해 줄 수 있다. 여기서 GameMode 를 상속받는 SpartaGameMode라는 이름의 클래스를 만들어준다.

 

3-3) SpartaGameMode.h

 

    3-3) SpartaGameMode.cpp

SpartaGameMode.cpp 내부에서 앞에 생성 한 PlayerController 클래스를 할당 해준다.

 

3-4) 생성한 GameMode 적용

프로젝트 세팅 > 맵&모드 > 기본 게임모드를 생성한 게임모드로 설정해주면 됨 

여기선 C++클래스를 블루프린트로 하위 클래스를 만들어 적용해줌( 블루프린트를 통해 시각적으로 관리하기 용이하게 하기위함 )

 

 

4. 에디터에서 PlayerController 에 IMC 설정

SpartaPlayerController 클래스를 기반으로한 블루프린트를 생성 후 위 처럼 생성한 IMC와 IA를 설정해준 후 이벤트 그래프에서 입력 시 프린트 스트링을 출력하도록 해본다.

 

5. 결과물

입력에 따른 Print 출력이 되는 것을 확인 할 수 있다.

입력에 따른 위치 이동과 애니메이션은 다음 포스팅으로 다뤄 보도록 하자.