0. 개요

각 맵에서 다른 맵으로 이동하거나, 레벨이 시작될 때에는 게임 모드에 지정된 기본 플레이어 스타트에서 시작하게 된다.

여러 플레이어 스타트를 두어 각 플레이어 스타트를 태그로 분류하여 사용할 수 있게 되면, 각 맵마다 특정 플레이어 스타트에서 시작하게 할 수 있다.

궁극적으로는 플레이어 스타트의 지점을, 플레이어가 마지막으로 저장한 위치로 재지정하는 것이 목표이다.

 

 

1. 플레이어 스타트

(1) AuraGameModeBase에서 ChoosePlayerStart 함수 오버라이드

public:
	virtual AActor* ChoosePlayerStart_Implementation(AController* Player) override;
AActor* AAuraGameModeBase::ChoosePlayerStart_Implementation(AController* Player)
{
	// 플레이어 스타트 클래스 수집
	TArray<AActor*> Actors;
	UGameplayStatics::GetAllActorsOfClass(GetWorld(), APlayerStart::StaticClass(), Actors);

	if (Actors.Num() > 0)
	{
		// 맵에 존재하는 플레이어 스타트 중 처음 것을 기본으로 선택
		AActor* SelectedActor = Actors[0];
		for (AActor* Actor : Actors)
		{
			if (APlayerStart* PlayerStart = Cast<APlayerStart>(Actor);)
			{
				// 태그와 일치하는 플레이어 스타트를 반환
				if (PlayerStart->PlayerStartTag == FName("ThisTag"))
				{
					SelectedActor = PlayerStart;
					break;
				}
			}
		}
		return SelectedActor;
	}
	return nullptr;
}

이 함수는 게임모드가 플레이어 스타트를 선택하는 함수이다.

해당 함수를 오버라이드하여 플레이어 스타트마다 지정할 수 있는 플레이어 스타트 태그를 서칭해 일치하는 플레이어 스타트를 반환한다.