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

arrow_back Aula 14 - Criação de Elementos em Tempo de Execução, Dano e Elementos Coletáveis

1. Criação Dinâmica de Objetos

1.1 Criando o Prefab do Míssil

Em seguida, depois de garantirmos que o objeto terá iniciado o seu processo de autodestruição, verificamos com quem ele colidiu. Faremos isso a partir do compareTag. Se detectarmos que a colisão foi com o Player, ativaremos um novo método do Player. Esse método, criado a seguir, será responsável por alterar os pontos de energia restantes, além de retornar o que sobrou, após alterar o total. Se o total resultante for menor ou igual a zero, o jogador perdeu uma tentativa e o nível deverá ser parado.

Isso será feito pela bazuca e não pelo míssil diretamente. Preste bastante atenção nesse passo!

Quando criarmos o script da bazuca, o qual será responsável por criar os nossos mísseis, teremos o cuidado de colocar todos os mísseis como filhos da bazuca. Isso acontece para a bazuca poder ser responsável por todos eles e se comunicar com cada um caso um evento como esse aconteça. A fim de isso funcionar, o míssil responsável por destruir o jogador deverá avisar à bazuca o ocorrido, para ela avisar a todos os outros mísseis. Esse sistema de comunicação é algo novo, que conheceremos em breve. A primeira parte, no entanto, é o filho avisar ao pai que há uma nova mensagem a ser transmitida. Isso é feito pelo método Stop, criado no componente PAI do míssil, a bazuca.

Após ter causado o dano e repassado qualquer mensagem de destruição, o elemento cumpriu sua missão e está pronto para ser destruído. A destruição deve acontecer com um atraso, no entanto, para garantir que a animação de explosão tenha tempo de tocar. Utilizamos, para isso, nosso conhecido método Invoke, com um atraso de 1 segundo.

Para finalizar o script, temos mais dois métodos. O primeiro deles, StopMissile, desabilita o míssil. Esse método será utilizado como receptor da mensagem da bazuca. Caso ela avise que o jogo chegou ao fim, o míssil cuidará de parar sua simulação. O último método será chamado pelo Invoke para destruir o componente após um tempo.

Com isso, finalizamos o nosso objeto Missile por completo! Ele está funcional e pronto para ser criado por nossa bazuca. Não conseguiremos ainda, no entanto, executar o nosso jogo para ver o componente funcionando, pois não definimos a nova função no player e nem criamos a nossa bazuca, a qual receberá a mensagem de stop que estamos enviando. Porém, caso queira ver o objeto funcionando, comente todo o IF do método OnTriggerEnter2D e aperte o play! Posicione o objeto adequadamente no nível para você poder vê-lo e interagir. A Figura 2 demonstra o componente em ação, ainda sem o dano, com os métodos comentados.

Míssil funcionando e acertando o personagem, ainda sem dano.

Agora que já vimos o míssil funcionando, podemos, então, deletar o objeto da cena.

“Mas professor, nós criamos um objeto esse tempo todinho para deletá-lo?”

Sim! Estamos deletando apenas da cena! O Prefab criado a partir dele ainda está mantido. E é o Prefab que utilizaremos em nossa bazuca a fim de criar os mísseis na cena e desafiar um pouco mais o jogador a partir disso. O próximo passo, agora, é alterar o nosso Level_2, na parte vista na Figura 3, para podermos adicionar a bazuca à nossa cena. Veja, na Figura 4 o resultado da alteração, que desenvolveremos a seguir.

Parte do Level_2 a ser alterado para adicionarmos a bazuca. Level_2 após as alterações realizadas, com a bazuca já adicionada à cena (em preto).

Versão 5.3 - Todos os Direitos reservados