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

arrow_back Aula 07 - Jogo Polygonal Rescue - Parte 5 - Gizmos Personalizados

Adaptando o InstanciarPrefabs para uma Área Retangular

Para adaptar o nosso InstanciarPrefabs.cs para que a área de geração seja retangular, precisamos inicialmente trocar a variável float distancia_maxima por duas outras:

  • public float largura: Largura do retângulo (eixo X).
  • public float comprimento: Comprimento do retângulo (eixo Y).

Assim poderemos configurar essas duas variáveis separadamente. Para isso realize os seguintes passos:

  1. Remove a variável distancia_maxima;
  2. Adicione as variáveis largura e comprimento (ambas do tipo float);

A declaração de suas variáveis deve ficar como na Figura 5.

Figura 05 - Novas variáveis do script InstanciarPrefabs.
Novas variáveis do script InstanciarPrefabs.
Fonte: Captura de tela do Unity – Game Engine. Disponível em: https://unity3d.com/pt/. Acesso em: 21 de março de 2017.

Agora vamos modificar a nossa função Awake para usar a largura e o comprimento no lugar de distancia_maxima. Não é algo muito difícil, pois o código está bem organizado. Repare que distancia_maxima é atualmente utilizada para a definição da posição da instância do prefab a ser criado (ver Figura 6).

Figura 06 - Uso atual da variável distancia_maxima para definir a posição da instância do prefab.
Uso atual da variável distancia_maxima para definir a posição da instância do prefab.
Fonte: Captura de tela do Unity – Game Engine. Disponível em: https://unity3d.com/pt/. Acesso em: 21 de março de 2017.

Repare na Figura 6 que a variável distancia_maxima está destacada pelo Monodevelop. Isso ocorre pelo fato de que ela não existe mais, já que a removemos.

Trocaremos as duas ocorrências de distancia_maxima por (largura/2) na primeira linha em que ela aprece. Por que dividir largura por 2? Isso se dá pelo fato de a posição X variar do centro da área + para um lado e - para o outro, ou seja, para cada um desses lados precisamos variar a metade da largura. A mesma coisa para a variável comprimento e o eixo Y. A Figura 7 mostra em azul a área de geração retangular que estamos querendo criar, assim como a representação das variáveis largura e comprimento em vermelho e a metade do valor dessas variáveis de cada lado do centro em verde.

Figura 07 - Área retangular de geração dos prefabs com as variáveis largura e comprimento.
Área retangular de geração dos prefabs com as variáveis largura e comprimento.
Fonte: Captura de tela do Unity – Game Engine. Disponível em: https://unity3d.com/pt/. Acesso em: 21 de março de 2017.

Para utilizar a variável largura modifique a linha:

AخA
1
posicao_da_instancia.x = Random.Range ((centro.x - distancia_maxima), (centro.x + distancia_maxima));

Para que fique assim:

1
1
posicao_da_instancia.x = Random.Range ((centro.x - largura/2), (centro.x + largura/2));

Para utilizar a variável comprimento, modifique a linha:

1
1
posicao_da_instancia.z = Random.Range ((centro.z - distancia_maxima), (centro.z + distancia_maxima));

Para que fique assim:

1
1
posicao_da_instancia.z = Random.Range ((centro.z - comprimento/2), (centro.z + comprimento/2));

E aí, tudo bem até aqui? É basicamente essa a única mudança no script para que ele instancie prefabs em uma área retangular. Lembre-se que qualquer dificuldade ou questionamentos podem ser esclarecidos nos encontros presenciais ou através da criação de tópicos no Moodle para discutir sobre o assunto.

Versão 5.3 - Todos os Direitos reservados