UnrealEngine5 플레이어 액터에 접근하는 법
어떤클래스에서 플레이어 액터에 접근하는 방법
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을 전달한다.