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

O primeiro passo para a criação de elementos dinamicamente no Unity é criar um Prefab que represente o elemento a ser criado. Definiremos um Prefab para o míssil, com todos os seus componentes, e, então, a partir desse Prefab, criaremos um segundo componente capaz de instanciá-lo em tempo de execução. A ideia é simples! Vejamos como fazer!

Para começar, importaremos a Sprite Sheet que disponibilizamos do míssil. Essa Sprite Sheet é um pouco diferente das outras, pois as imagens do míssil são quadradas. Com isso, a Sprite Sheet ficou em 4 x 4, com o tamanho de 500 x 500 para cada um dos sprites envolvidos.

Após importar a Sprite Sheet para a pasta sprites de nosso projeto, devemos configurá-la para o modo Multiple e, em seguida, fatiá-la em pedaços de 500 x 500. Isso nos dará um total de dezesseis sprites diferentes que serão criados a partir dela. Utilizaremos os dois primeiros sprites para a animação de movimento e os quatorze últimos para a animação de explosão.

Com a Sprite Sheet fatiada, podemos começar a criação do elemento em si, como parte da cena. Utilizaremos o primeiro sprite da Sprite Sheet como referência para a criação do elemento. Arraste-o para a cena, criando um novo objeto com o nome missile_sprite_sheet_0. Renomeie o objeto para Missile e altere logo a sua Order in Layer para 1. Esse objeto será utilizado como a base para a criação de nosso Prefab. Iremos configurá-lo adequadamente e, em seguida, geraremos o Prefab a partir disso e o deletaremos, para não ficarmos com uma instância órfã na cena.

A primeira alteração a ser feita no objeto é adicionar a ele um Box Collider 2D, para podermos detectar a sua colisão com outros objetos da cena. Perceba, no entanto, que, ao adicionarmos o Box Collider 2D, ele ocupará toda a área do sprite. Isso geraria colisões terríveis! Editamos, então, o colisor para ele cobrir apenas o míssil em si, ignorando a parte transparente da sprite. Os valores adequados para isso ,encontrados no Box Collider 2D, foram Size X = 2 e Y = 1.25. Isso fará com que a colisão seja um pouco mais precisa. Além disso, é necessário alterar o colisor para Trigger, pois ele apenas deve detectar colisões e não realmente simulá-las fisicamente. Marque a opção Is Trigger.

Precisaremos, ainda, de um RigidBody 2D para realizar as simulações de física a partir dele. Esse corpo, no entanto, não precisa responder à gravidade ou se preocupar com qualquer arrasto. Toda a movimentação dele acontecerá via script, através da alteração de sua velocidade. Por esse motivo, devemos alterar o seu tipo para Kinematic. Nós o referenciaremos no script a ser desenvolvido.

Necessitamos apenas de mais dois componentes para finalizarmos o nosso objeto e podermos criar o Prefab: o script e o Animator. Como o script trará um pouco de código novo e lidará diretamente com o Animator, começaremos adicionando o Animator. Já utilizamos diversos assuntos vistos em nossas aulas anteriores. Vamos a mais um?

Versão 5.3 - Todos os Direitos reservados