Caso esta seja a primeira vez que você acessa a série, sinta-se convidado a vir conosco em uma trajetória repleta de conteúdos interessantes sobre desenvolvimento de jogos. A partir do primeiro texto da série, você terá a oportunidade de aprender mais sobre como funciona a ferramenta e como ela pode pode nos auxiliar no processo de elaboração de games dos mais variados estilos.
Aprenderemos desde conceitos mais simples, como os que envolvem a instalação e a configuração da ferramenta nos computadores, até tópicos mais elaborados, envolvendo a elaboração de cenas, a inserção de personagens, imagens e sons, além da programação “de fato”, codificando os scripts controladores dos comportamentos de cada elemento que estiver presente dentro de nossas aventuras.
Venha conosco nesta caminhada rumo a novos conhecimentos!
Elementos cenográficos e barreiras
Anteriormente, durante os testes de animação que realizamos com o modelo tridimensional que representa o paciente, percebemos que, caso deixemos o boneco caminhar indefinidamente pelo cenário, muito provavelmente ele irá atravessar o cenário, “furando” a parede e indo parar nos confins do universo virtual:
Esse tipo de comportamento certamente não está entre os que esperamos para o nosso jogo, sobretudo quando implementarmos no game formas de o jogador percorrer o cenário controlando o personagem Doutor Tratanildo. Portanto, iniciaremos hoje nossas atividades delimitando o espaço em que os personagens poderão transitar no cenário, por meio do uso de Colliders a serem acrescidos a alguns dos objetos do consultório.
Para tal, vamos abrir nosso projeto para edição, indo ao Unity Hub e clicando duas vezes sobre o item referente ao projeto Consultório do Dr. Tratanildo. Na interface inicial do Unity, na aba Project, abra a pasta Assets, Scenes e, por fim, clique duas vezes no ícone da cena ConsultorioScene. Certifique-se de que a aba Scene esteja em evidência, conforme ilustrado a seguir:
Temos diversos elementos em nosso cenário que poderão servir como “barreiras” para impedir que os personagens caminhem para fora do ambiente de ação do game, tais como as paredes, pilastras e outros elementos estruturais. Vamos inserir para alguns desses objetos componentes do tipo Box Collider, a fim de impedir os comportamentos indesejados.
Na aba Hierarchy, selecione os GameObjects listados a seguir, que estão atualmente subordinados a Ambientacao, que por sua vez é subordinado a CenarioFixo:
- Quina_1, Quina_2, Quina_3 e Quina_4;
- Parede_1, Parede_2, Parede_3 e Parede_4;
- Janela_1 e Janela_2;
- Porta_1;
- Pilastra_1, Pilastra_2, Pilastra_3 e Pilastra_4.
Na aba Inspector, iremos clicar em Add Component e selecionar um componente do tipo Box Collider. Note que, agora, todos os objetos selecionados apresentam colisores tridimensionais.
Um detalhe curioso é que os valores dos atributos Center (X, Y, Z) e Size (X, Y, Z) aparecem com uma barra em suas caixas de edição. Isso se deve ao fato de que existem valores diferentes para cada componente Box Collider de cada GameObject selecionado.
Esses valores foram concedidos automaticamente pelo Unity com base nas dimensões dos modelos das quinas, paredes, janelas, pilastras e porta utilizados. Podemos notar isso pelas finas linhas verdes que circundam cada objeto, como exemplificado na imagem a seguir. Estando elas com dimensões parecidas aos objetos aplicados, não precisamos alterar os valores dos atributos de cada Box Collider.
Ajustes nos colisores
Agora, iremos implementar colisores para outros elementos importantes de nosso cenário, que não desejamos que sejam “atropelados” por nenhum personagem em suas trajetórias de deslocamento.
Na aba Hierarchy, selecione os GameObjects listados a seguir, também subordinados a Ambientacao como os objetos os quais receberam alterações agora há pouco:
- Biombo_1 e Biombo_2;
- Planta_1, Planta_2, Planta_3 e Planta_4.
Na aba Inspector, insira, para o conjunto de objetos selecionados, componentes do tipo Box Collider. Note que, diferentemente do que observamos anteriormente, as dimensões dos colisores não estão alinhadas ao tamanho de cada objeto:
A adequação automática das dimensões de um Collider ao objeto a que foi atrelado pode acabar não ocorrendo por diversos fatores, sendo um deles a composição do objeto por múltiplos GameObjects subordinados, como é o caso dos objetos que representam os biombos e as plantas.
Considerando isso, o Unity permite que realizemos alterações para as dimensões dos Colliders manualmente, por meio da modificação dos valores de seus atributos Center (X, Y, Z) e Size (X, Y, Z).
Na aba Hierarchy, selecione simultaneamente Biombo_1 e Biombo_2. Na aba Inspector, altere os valores dos atributos descritos a seguir:
- Center X = 0, Y = 1.75, Z = 0;
- Size X = 2.75, Y = 3.25, Z = 0.3.
Agora sim esses GameObjects estão com colisores adequados às dimensões de cada modelo, certo? Iremos fazer o mesmo para os objetos que representam as plantas.
Na aba Hierarchy, selecione simultaneamente Planta_1, Planta_2, Planta_3 e Planta_4. Na aba Inspector, altere os valores dos atributos descritos a seguir:
- Center X = 0, Y = 0, Z = 0.01;
- Size X = 0.0075, Y = 0.0075, Z = 0.02.
Mais uma vez, temos objetos com colisores condizentes às reais dimensões de cada vaso, o que será muito importante para o projeto em breve.
Quebrando a (quarta) parede
Para vermos de forma mais ampla como se comportam os objetos que sofreram intervenções hoje, vamos posicionar a câmera principal num ângulo mais favorável à observação das interações.
Na aba Hierarchy, selecione o GameObject Main Camera, subordinado a Cameras. Na aba Inspector, altere os valores dos atributos de seu componente Transform conforme indicado a seguir:
- Position X = -14.5, Y = 5, Z = -5;
- Rotation X = 0, Y = 90, Z = 0.
Feito tudo isso, agora é a “hora da verdade”: vá à aba Game e pressione o ícone do botão Play para observar o comportamento do personagem em relação aos objetos recém-fortalecidos:
Pois é, nada mudou! O paciente continua indo em frente, “quebrando a parede” e rumando ao infinito, desta vez até mais rapidamente do que antes, devido às alterações que realizamos em nosso último encontro, ao modificarmos o valor do parâmetro Passo_caminhada do controlador de animações para 5. O que pode ter ocorrido então?
Interrompa a simulação da execução, clicando novamente sobre o ícone do botão Play. Não se esqueça de salvar a cena (menu File, opção Save) e o projeto (menu File, opção Save Project) antes de fechar o editor.
Próximos passos
Iremos descobrir muito em breve que as alterações que realizamos não foram em vão, pois a presença de colisores nos elementos do cenário irá, sim, influenciar no comportamento dos personagens humanoides da cena após realizarmos ajustes nos componentes dos próprios personagens.
Portanto, em nosso próximo encontro, iremos tirar do papel essas necessárias modificações para que o teimoso paciente inicial de nossa aventura pare de atravessar paredes e objetos. Spoiler: o segredo está no uso adequado de Colliders e de Rigidbodies.
Nosso próximo texto já encontra-se disponível, continue conosco nessa jornada de conhecimento e fique ligado sempre aqui no GameBlast!
Revisão: Ives Boitano