A forma que o Game Over é implementado neste jogo é bem simples. Quando o tempo acaba, o jogador pode continuar a se mover mas ele não consegue pegar os itens, e é exibido na tela os textos GAME OVER e Press Enter.
Nós já implementamos toda a lógica necessária para o Game Over nos outros artigos. A única parte que falta é desenhar as mensagens na tela. Vou mencionar os artigos que possuem alguma lógica relacionada ao Game Over.
O estado de Game Over é controlado por uma variável booleana chamada bGameOver que foi criada no artigo Variáveis de estado do jogo.
A única condição que leva ao fim de jogo é quando o tempo for igual a zero. Este teste é realizado na função Clock() que foi mostrada no artigo Criando um Timer em Unreal C++.
Quando o valor da variável bGameOver é true, o jogador não consegue pegar os itens, pois uma das condições testadas no momento da sobreposição com o item é que a variável bGameOver não pode ser true, como foi visto no artigo Classe TutoProjectCollectable: Funções.
O artigo Classe TutoProjectHUD: Desenhando na tela possui uma função com o nome DrawHUD() que é usada para desenhar as informações do jogo na tela. Vamos adicionar nesta função um condicional para testar se está no estado Game Over e desenhar na telas os textos GAME OVER e Press Enter. A versão completa da função DrawHUD() vai ficar assim:
void ATutoProjectHUD::DrawHUD()
{
Super::DrawHUD();
FString textoHUD = FString::Printf(TEXT("Score: %d"), TutoProjectGameMode->GetScore());
DrawText(textoHUD, FColor::Yellow, 10, 10, nullptr, 3.0f, false);
textoHUD = FString::Printf(TEXT("Time: %d"), TutoProjectGameMode->GetTime());
DrawText(textoHUD, FColor::Red, 300, 10, nullptr, 3.0f, false);
textoHUD = FString::Printf(TEXT("Player Level: %d"), TutoProjectGameMode->GetPlayerLevel());
DrawText(textoHUD, FColor::Blue, 550, 10, nullptr, 3.0f, false);
if (TutoProjectGameMode->IsGameOver())
{
DrawText("GAME OVER", FColor::Red, 400, 200, nullptr, 3.0f, false);
DrawText("Press Enter", FColor::Red, 400, 400, nullptr, 3.0f, false);
}
}
Está feito. Concluímos a implementação deste jogo simples. Agora é só compilar o projeto e experimentar o jogo.
Este artigo conclui a parte I dos tutoriais de Unreal C++. O principal objetivo desta parte é fazer com que você tenha um primeiro contato com conceitos da linguagem C++ na Unreal Engine e veja eles sendo usados na prática.
O projeto com código fonte está disponível neste link:
Ao abrir o projeto pela primeira vez, aparecerá uma mensagem perguntando se deseja fazer o rebuild dos módulos. Clique no botão Sim.