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;
}
이 함수는 게임모드가 플레이어 스타트를 선택하는 함수이다.
해당 함수를 오버라이드하여 플레이어 스타트마다 지정할 수 있는 플레이어 스타트 태그를 서칭해 일치하는 플레이어 스타트를 반환한다.
'UE 5 스터디 > Gameplay Ability System(GAS)' 카테고리의 다른 글
29-3. 저장 - (4) 플레이어 스타트 태그 저장 (0) | 2025.04.07 |
---|---|
29-2. 저장 - (3) 커스텀 게임 인스턴스 클래스 (0) | 2025.04.07 |
28-14. 로드 메뉴 UI - (10) 맵 불러오기 (0) | 2025.04.07 |
28-13. 로드 메뉴 UI - (9) 필드 노티파이 - 맵 이름 가져오기 (0) | 2025.04.07 |
28-12. 로드 메뉴 UI - (8) 메뉴 앵커 - 저장 데이터 삭제 (0) | 2025.04.04 |