Os materiais didáticos aqui disponibilizados estão licenciados através de Creative Commons Atribuição-SemDerivações-SemDerivados CC BY-NC-ND. Você possui a permissão para visualizar e compartilhar, desde que atribua os créditos do autor. Não poderá alterá-los e nem utilizá-los para fins comerciais.
Atribuição-SemDerivações-SemDerivados
CC BY-NC-ND
Cursos / Jogos Digitais / Desenvolvimento com Motores de Jogos I / Aula
É 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.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class GameController : MonoBehaviour {
private int robotsLeft = 3;
private string sceneName;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
public void Break () {
robotsLeft -= 1;
Debug.Log(robotsLeft);
Invoke("RestartLevel", 3f);
}
private void RestartLevel () {
sceneName = SceneManager.GetActiveScene().name;
if (robotsLeft > 0) {
SceneManager.LoadScene(sceneName);
} else {
SceneManager.LoadScene("GameOver");
}
}
}
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