Cursos / Jogos Digitais / Desenvolvimento com Motores de Jogos I / Aula
Mas chega de derrotas, não é? Falaremos agora de vitórias! Precisamos, ao chegar no fim do nível adequadamente, vencer! Avançar de fase! E celebrar! Faremos isso agora.
Por sorte, já temos um objeto responsável por representar o fim da fase. É o nosso BoundaryEnd. Adicionaremos, a esse objeto, um script capaz de avisar ao nosso GameController e ao nosso Player quando a condição de vitória for atingida. Nomeie esse script EndBoundaryTrigger. O código dele, similar ao já desenvolvido, pode ser visto na Listagem 8.
Listagem 8 - Código do script EndBoundaryTrigger.Perceba que o script tem duas diferenças em relação ao da fronteira inferior. Nesse caso, estamos usando o método OnCollisionStay2D. Esse método é chamado enquanto uma colisão estiver ocorrendo. O motivo disso é que queremos iniciar a animação de vitória apenas quando o personagem estiver no chão, então, detectamos a colisão e só disparamos o evento quando o personagem estiver lá. Isso é testado através do método já utilizado anteriormente, o isGrounded(), do próprio Player.
Mais uma vez, precisamos adicionar ao Player e ao nosso GameController os métodos relacionados ao fim do level. Esses métodos podem ser vistos nas Listagens 9 e 10, respectivamente.
Listagem 9 - Método LevelEnd adicionado ao script PlayerController.Percebam que o método do PlayerController é bem similar ao já desenvolvido antes, mudando apenas a animação que será invocada do Animation Controller. Já o método do GameController varia um pouco.
No caso do GameController, estamos utilizando uma nova abordagem para avançar a fase. Buscamos a cena ativa, da mesma maneira como fazíamos no outro método, mas agora pegamos o índex dessa cena, e não o seu nome. Em seguida, carregamos a cena com a outra versão do LoadScene, o qual recebe um número como parâmetro, e então passamos o índex da cena ativa acrescido em uma unidade. Ou seja, carregamos a próxima cena de acordo com o Build Settings.
Como só temos em nosso Build Settings a cena principal do jogo, como a cena 0 e a cena de Game Over em seguida, como a cena 1, esse método também nos levará à cena de Game Over. Mas isso pode ser mudado, concorda?
Versão 5.3 - Todos os Direitos reservados