Make Unreal REAL.
article thumbnail
이득우의 언리얼 C++ 게임 개발의 정석

 

사용자 입력을 처리하는 로직은 폰 클래스에 구현하는 것이 일반적이다.

플레이어 컨트롤러는 여러 폰에 빙의할 수 있다.
따라서 플레이어 컨트롤러에 로직을 구현해 서로 다른 폰을 똑같이 조종하는 것보다는, 빙의한 플레이어 컨트롤러에 관계 없이 자신을 조종하는 방법을 폰에서 제공하는 것이 효율적이기 때문이다.


단, 시스템에 관련된 입력 처리의 경우 플레이어 컨트롤러에 구현하는 것이 좋다.

 

다음은 W, S 입력을 전후 이동으로 처리한 로직이다.

 

입력을 바인딩하기 위해 기본적으로 SetupPlayerInputComponent() 함수를 오버라이딩 하도록 선언되어 있다.

 

 

폰의 헤더에 "UpDown" Axis 입력을 처리할 UpDown() 함수를 선언한다.

 

 

SetupPlayerInputComponent() 함수를 오버라이딩 해 "UpDown" Axis 입력을 UpDown() 함수에서 처리하도록 바인딩한다.

  • 이때 전달된 UInputComponent 객체는 폰에 빙의한 컨트롤러의 객체다.

 

UpDown 함수에서 폰의 전후 이동을 처리한다.

 

 

일반적이지 않게 컨트롤러에서 사용자 입력을 처리할 수도 있다.

 

SetupPlayerInputComponent() 함수를 오버라이딩 하지 않도록 되어 있기 때문에 선언해준다.

 

컨트롤러의 헤더에 "LeftRight" Axis 입력을 처리할 LeftRight() 함수를 선언한다.

 

 

SetupPlayerInputComponent() 함수를 오버라이딩 해 "LeftRight" Axis 입력을 LeftRight() 함수에서 처리하도록 바인딩한다.

 

UpDown 함수에서 폰의 좌우 이동을 처리한다.

  • GetPawn() 함수를 이용해 빙의 중인 폰을 가져올 수 있다.

 

 

폰의 입력을 비활성화하는 APawn::DisableInput(APlayerController*) 함수의 경우, 플레이어 컨트롤러의 Input Stack에서 현재 폰을 제거한다.

  • 따라서 폰에 구현된 입력은 처리가 불가능하지만, 플레이어 컨트롤러에 구현된 입력 로직은 여전히 사용 가능하다.

 

profile

Make Unreal REAL.

@diesuki4

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그