UnrealEngine

UnrealEngine5 플레이어 액터에 접근하는 법

Cheddar 2024. 1. 4. 10:26

어떤클래스에서 플레이어 액터에 접근하는 방법

GetPlayerPawn()함수를 사용하여 접근할 수 있다

https://docs.unrealengine.com/5.0/en-US/API/Runtime/Engine/Kismet/UGameplayStatics/GetPlayerPawn/

 

UGameplayStatics::GetPlayerPawn

Returns the pawn for the player controller at the specified player index.

docs.unrealengine.com

호출방법

static APawn * GetPlayerPawn
(
    const UObject * WorldContextObject,
    int32 PlayerIndex
)

 

입력으로 WorldContextObject와 PlayerIndex를 받는데, 싱글플레이에서 PlayerIndex는 0이다.

반환으로 APawn*을 타입을 반환하는데 그냥 전달하면 APawn이 상위 객체이기 때문에오류가 발생할것이다. 

그렇기 떄문에 Cast연산자를 사용하여 적절하게 형변환을 시켜줘야한다.

 

부)여기서 WorldContextObject란?

World Context Object는 단순하게, World에 존재하는 객체이다.
UGameplayStatics에서 이 WorldContextObject를 통해 거슬러 올라가, World를 찾게 된다.
UGameplatStatics의 대부분의 기능은 이 WorldContextObject를 필요로 한다.

출처)https://velog.io/@seok9403/WorldContextObject%EB%9E%80

 

WorldContextObject란?

World Context Object는 단순하게, World에 존재하는 객체이다.UGameplayStatics에서 이 WorldContextObject를 통해 거슬러 올라가, World를 찾게 된다.UGameplatStatics의 대부분의 기능은 이 WorldConte

velog.io

 

사용 예

//Tankの位置を保存する
void ATower::BeginPlay()
{
	Super::BeginPlay();
	Tank = Cast<ATank>(UGameplayStatics::GetPlayerPawn(this, 0));
}

 

위 코드는 Tower( non-player)클래스에서 플레이어에 접근하는 코드이다.

this포인터를 사용하여 WorldContextObject정보를 전달하고, 싱글플레이기 때문에 PlayerIndex에 0을 전달한다.