Cursos / Jogos Digitais / Desenvolvimento com Motores de Jogos I / Aula

arrow_back Aula 11 - O Game Controller e a Transição Entre Cenas

3. O Game Controller

3.2 Adicionando a Contagem de Chances Restantes do Jogador

É muito bom ver o nosso amigo robô de volta após sofrer aquele pequeno acidente no buraco! Mas também há limites para tudo. Em algum momento, as chances de passar do nível se esgotarão e o jogo chegará ao seu fim, como todo jogo. E como será que podemos contar as chances restantes?

A resposta é simples: com o GameController!

Podemos adicionar uma nova variável ao script do nosso GameController, a qual conte quantas chances restam ao jogador para concluir o nível e, sempre que houver uma quebra, essas chances serão diminuídas. Quando chegarmos a zero chances restantes, o jogo deverá se encerrar com uma cena de Game Over.

Para isso, criaremos uma nova variável inteira chamada robotsLeft. Iniciaremos o jogo com 3 chances! Além disso, caso as chances se esgotem, alteraremos, para ir à Game Over, o código de carregar a próxima cena. O código alterado pode ser visto na Listagem 6.

Listagem 6 - Alteração do código do script GameController realizada para obtermos a contagem das chances restantes.
Fonte: Elaborada pelo autor.

Adicionamos, ao nosso jogo, a contagem de robôs restantes e, para o caso de as tentativas se encerrarem, também adicionamos a troca de cenas pela cena de Game Over. Optamos, ainda, por colocar uma chamada ao Log indicando quantas tentativas restam a cada vez que o jogo for reiniciado, para podermos saber quantas chances ainda temos. Vejam o resultado disso ao executarem o jogo! Testem!

Ops... Estranho, não? Como pode o jogador perder uma chance, ficar com duas, perder mais uma e ficar com... duas?

Pois é! Isso acontece devido ao reinício da cena! Quando o robô quebra, nós vamos até o SceneManager e solicitamos que a cena seja carregada novamente, certo? E o que acontece quando a cena é carregada novamente? Os scripts também são carregados novamente! Assim, os valores iniciais são retornados! Como podemos resolver isso?

Versão 5.3 - Todos os Direitos reservados