작성
·
368
0
지금까지 컨트롤에 관련된 강의를 들으면서 PlayerController는 무슨 역할을 하는지 궁금합니다.
제가 2~3강을 듣고 이해한 흐름은 다음과 같습니다.
AABCharacterPlayer의 BeginPlay함수에서 맵핑 컨텍스트(IMC)를 설정하는데 PlayerController를 가져와 Subsystem을 선언하는데 쓰인다. (추후엔 SetCharacterControl로 바뀜)
Subsystem은 IMC를 운영하는 클래스로 Subsystem에서 InputSystem을 가져와서 DefaultMappingContext을 맵핑 컨텍스트 에셋으로 추가한다.
DefaultMappingContext는 AABCharacterPlayer의 CDO에서 주소값으로 가져온다. DefaultMappingContext는 IA_Jump, IA_Move, IA_Look가 등록된 IMC로 이걸 SubSystem에 등록시킨다.
이는 Move또는 Look함수에 있는 AddControllerYawInput 함수를 파보면 PlayerContoller에 Rotation값을 계속 갱신하는 것으로 움직인다는 것을 알 수 있다.
그렇다면 PlayerController는 그냥 GameMode에서 지정만 하고 실질적인 구현은 없는건가요?
답변 1
1
PlayerController가 Rotation 값을 가지고 있다는 것은 회전에 대한 플레이어의 의지(지향하는 방향)를 기록하고 관리한다고 이해하시면 될 것 같습니다.
현실 세계의 우리도 설정한 목표를 달성하기 위해 꾸준히 노력해 자기 자신을 변화시키는 것처럼 플레이어 컨트롤러에 저장된 Rotation 값은 다양한 방법으로 활용할 수 있습니다.
( 해당 각도가 되기 위해 카메라 혹은 캐릭터를 지정한 각속도로 서서히 회전한다던지 등등.. )
정리하면
- 캐릭터(폰)의 Rotation : 가상 세계의 액터에 설정된 현재 회전 값
- 플레이어 컨트롤러의 Rotation : 플레이어가 가상 세계의 액터에게 부여한 목표 회전 값
과 같은 용도로 활용하시면 됩니다. 다만 꼭 이렇게 해야 하는 것은 아닙니다.
이 외에도 플레이어 컨트롤러는 입력을 관장하고, UI 및 카메라를 플레이어의 화면에 보내는 등 다양한 역할을 담당합니다.