게임 개발 (언리얼 엔진)

UE4 게임 개발 EscapeGame - 20 : 게임 엔딩 제작

종황이 2020. 12. 28. 23:48

게임 엔딩을 두 가지 트리거로 만들었습니다.

1. 시네마틱

CineCameraActor를 생성해서 원하는 위치마다 키를 추가해주면서 카메라를 이동 및 회전시켜줍니다.

오디오, 페이드, 이벤트 등 다양하게 효과를 줄 수 있고, 시간 조절도 가능합니다.

블루프린트 트리거를 생성해서 OnComponentBeginOverlap 이벤트때 시네마틱을 플레이해주고 초기값 세팅도 가능합니다.

2. cpp

블루프린트에서 추가 작업을 해주고싶었는데 복잡하고 가독성이 떨어져서 추가 처리는 cpp로 해줬습니다.

void ATriggerEnding::TriggerBeginOverlap(
	UPrimitiveComponent* OverlappedComponent,
	AActor* OtherActor,
	UPrimitiveComponent* OtherComp,
	int32 OtherBodyIndex,
	bool bFromSweep,
	const FHitResult& SweepResult)
{
	AMainGameMode* GameMode = Cast<AMainGameMode>(GetWorld()->GetAuthGameMode());

	if (IsValid(GameMode))
	{
		GameMode->GetAudioComponent()->Stop();

		UWidgetMainHUD* MainHUD = GameMode->GetWidgetMainHUD();

		if (IsValid(MainHUD))
		{
			UEscapeGameInstance* GameInst = Cast<UEscapeGameInstance>(GetGameInstance());
			if (IsValid(GameInst))
			{
				GameInst->SetIsEnd(true);
			}
			MainHUD->Ending();
		}
	}
}

MainGameMode의 BGM을 Stop해주고, 메인 UI의 HUD(Head Up Display) 중 필요한 것만 남기고 전부 안보이게 처리해주었습니다.

CLEAR!