티스토리 뷰
Aura Player Controller
저번에 생성만 해두었던 PlayerController를 본격적으로 구현한다.
기본 성격을 정의하기 위한 생성자와, 월드 초기화 이후 필요한 Input Mapping을 등록하기 위한 BeginPlay()를 작성한다.
이후 CPP 파일에서 각 항목에 맞는 실제 구현부를 정의한다.
생성자에서는 bReplicates = true;를 설정하였다.
멀티플레이 환경에서 복제는 본질적으로 서버에서 발생한 변경 사항을 클라이언트로 전송하는 과정을 의미한다.
서버에서 엔티티의 상태가 변경되면, 해당 변경 사항은 서버에 연결된 모든 클라이언트로 복제되어 전달되어 서버와 클라이언트가 서로 동기화를 이루게 된다.
따라서 PlayerController 역시 서버와 클라이언트 간 상태 동기화가 이루어질 수 있도록 복제를 허용하였다.


Mapping Context를 참조하기 위해 포인터 변수를 선언하였다.
이때 Enhanced Input의 UInputMappingContext 타입은 헤더에서 전방 선언을 통해 존재만 미리 알리고, 실제 정의는 CPP 파일에서 include한다.
그리고 Enhanced Input은 기본 Engine 모듈에 자동 포함되는 게 아니라 명시적으로 Build.cs에 추가해야 사용하는 모듈이기에 해당 내용도 작성해주어야 한다.


Enhanced Input의 경우 LocalPlayer 단위의 Subsystem이 입력을 관리하기에, 먼저 GetLocalPlayer()로 LocalPlayer를 얻고 거기서 다시 EnhacedInput SubSystem을 꺼내온다.
이후에 해당 Subsyem이 유효한지 체크하고, 이후에 MappingContext를 할당해주었다.
여기서 우선도는 0으로 설정하였는데, 현재 MappingContext가 단일이기에 기본 값으로 설정해준 것이다.

이후 마우스 커서와 관련된 설정을 추가하였다.
해당 프로젝트는 화면에 UI 요소가 다수 배치되는 구조이므로, UI와 게임 입력을 병행할 수 있도록 입력 모드를 구성하였다.
먼저 마우스 커서를 표시하도록 활성화하고, 커서 모양은 기본 값으로 설정하였다.
이후 입력 모드를 Game과 UI 모두에서 입력이 가능하도록 설정하였으며, 마우스가 화면 밖으로도 자유롭게 이동할 수 있도록 옵션을 지정하였다.
마지막으로 마우스를 클릭하더라도 커서가 숨겨지지 않도록 설정한 뒤, 해당 입력 모드를 PlayerController에 적용하였다.

'Unreal > Udemy 강의' 카테고리의 다른 글
| Gameplay Ability System - Top Down RPG / Section 2-6 (0) | 2026.02.28 |
|---|---|
| Gameplay Ability System - Top Down RPG / Section 2-5 (0) | 2026.02.28 |
| Gameplay Ability System - Top Down RPG / Section 2-4 (0) | 2026.02.25 |
| Gameplay Ability System - Top Down RPG / Section 2-3 (0) | 2026.02.22 |
| Gameplay Ability System - Top Down RPG / Section 2-2 (0) | 2026.02.22 |
