이득우의 언리얼 C++ 게임 개발의 정석을 읽고 개인 공부 목적으로 요약 정리한 글입니다!
게임의 규칙, 틀 관리
플레이어 입장 시 플레이어를 점검하고 게임에 입장한 플레이어가 조종할 액터를 생성해 전달
: 플레이어 컨트롤러에게 조종당하는 액터
: 게임 세계에서 플레이어와 1:1로 소통하며 폰을 조종한다.
플레이어 입장 시 배정, 배정되면 변경할 수 없음
플레이어 컨트롤러가 두뇌로서 폰을 꼭두각시처럼 조종하는 거다!!
플레이어가 플레이어 컨트롤러를 통해 폰을 조종하는 행위 = "빙의"
플레이어는 플레이어 컨트롤러에 의해 폰을 변경하여 조종할 수도 있다
1. 플레이어 컨트롤러 생성
2. 플레이어 폰 생성
3. 플레이어 컨트롤러가 플레이어 폰을 빙의
4. 게임 시작
AHunt_PrototypeGameModeBase::AHunt_PrototypeGameModeBase()
{
DefaultPawnClass = AMyPawn::StaticClass();
PlayerControllerClass = AMyPlayerController::StaticClass();
}
void AHunt_PrototypeGameModeBase::PostLogin(APlayerController* NewPlayer)
{
Super::PostLogin(NewPlayer);
// 플레이어가 로그인 완료할 때 호출
// 함수 내부에서 빙의 작업 이루어짐![](https://velog.velcdn.com/images/uiwns811/post/1046c1a2-6faa-437f-b100-cd687e3d57f6/image.svg)
}
생성자에서 게임 모드의 DefaultPawn 속성에 Pawn을 넣는다.
AMyPawn 액터를 생성하고 지정 X
StaticClass() 함수를 통해 AMyPawn의 클래스 정보를 지정 O
멀티 플레이 환경에서는 플레이어가 입장할 때마다 클래스 정보를 기반으로 폰을 생성해야 한다.
void AMyPlayerController::PostInitializeComponents()
{
Super::PostInitializeComponents();
}
void AMyPlayerController::OnPossess(APawn* aPawn)
{
Super::OnPossess(aPawn);
// OnPossess 함수를 통해 Pawn을 빙의
}
void AMyPawn::PostInitializeComponents()
{
Super::PostInitializeComponents();
}
void AMyPawn::PossessedBy(AController* NewController)
{
Super::PossessedBy(NewController);
// PossessedBy 함수
}