Cursos / Jogos Digitais / Desenvolvimento com Motores de Jogos I / Aula
Existem algumas abordagens para adicionar objetos os quais afetem toda a fase. Aqui, utilizaremos a mais simples. Adicionaremos um objeto grande, do tamanho da fase, um pouco abaixo do nível (lembram do valor que eu pedi para memorizarem?), com um script para iniciar (também conhecido como trigger) a quebra de nosso personagem.
Esse objeto será criado a partir do mesmo sprite das plataformas, alterado para uma cor preta e posicionado de maneira a ocupar toda a parte de baixo da fase. Como também se trata de uma fronteira da fase, podemos adicionar esse elemento dentro de nossas Boundaries. Comecemos criando o objeto a partir do sprite Platform, arrastando-o para a nossa Hierarchy, em cima do objeto Boundaries, a fim de criá-lo como seu filho. Em seguida, renomeemos o novo objeto para BoundaryBottom.
Em relação aos componentes do objeto, precisaremos adicionar alguns novos componentes e alterar algumas propriedades dos atuais. Modificaremos, inicialmente, o Transform dele para que a posição seja (0, -10.5, 0) e a escala seja (650, 1, 1). Em seguida, no Sprite Renderer, alteramos a cor para preto e a Order in Layer para 1. Por fim, precisaremos adicionar um Box Collider 2D ao nosso objeto, para este poder parar o personagem, além de um script, que iniciará a quebra do personagem. Nomeie o script LevelLossTrigger e mova-o para a pasta Scripts. O resultado de todas essas alterações pode ser visto na Figura 6.
Agora, precisamos apenas alterar o código do script criado, a fim de fazer o que queremos. Mais uma vez, vejamos o código, na Listagem 2, para, em seguida, discutir os elementos contidos.
Listagem 2 - Código do LevelLossScript.cs.Perceba que esse script não usa nem o Start, nem o Update. A função importante para esse script é a função OnCollisionEnter2D, a qual nos avisará quando um objeto entrar em contato com o nosso objeto fronteira. Ao haver uma colisão, verificaremos se o objeto que colidiu é o Player (não se esqueça de verificar se o seu objeto Player está com a tag Player atribuída a ele!). Caso seja, buscaremos o script PlayerController e ativaremos nele o método Break(), responsável por alterar o personagem para o comportamento de quebrar.
O código é bem simples e não é tão complicado de entender, mas, como vemos na própria Listagem 2, o método Break está em vermelho. O que isso significa? Que não temos um método Break em nosso script PlayerController! Precisamos resolver isso, certo?
Versão 5.3 - Todos os Direitos reservados