GameDev

Aprendendo a programar jogos em Unity: pílulas da saúde e recursos avançados de Prefabs do Unity

Realizaremos a inserção do modelo 3D das pílulas da saúde no consultório, utilizando a poderosa ferramenta dos Prefab Variants.

em 14/07/2024
Seja bem-vindo(a) ao GameDev: Aprendendo a programar jogos em Unity de hoje! Passo a passo, estamos concluindo a composição gráfica de nosso cenário com a inserção de diversos elementos interessantes.

Embora, até o momento, praticamente todos os itens introduzidos no consultório tenham apresentado serventia apenas decorativa, o desenvolvimento dos objetos que iremos posicionar hoje sobre as prateleiras será muito importante para os próximos passos do processo de criação de Consultório do Dr. Tratanildo. Iremos, enfim, iniciar o processo de elaboração das famigeradas pílulas da saúde.


Se esta é a primeira vez que você acessa nossa série, considere-se muito bem-vindo e aproveite já para juntar-se a nós neste divertido processo de aprendizado. Por meio de diversos projetos práticos, iremos desvendar as inúmeras possibilidades que a ferramenta Unity nos oferece para a criação de jogos de diversos gêneros. Mesmo que você nunca tenha tido contato com o mundo do desenvolvimento de jogos, permita-se embarcar nessa viagem!

A partir do primeiro tópico da série, são apresentados desde os passos para se configurar e instalar corretamente a ferramenta em nossos computadores até os tópicos envolvendo aspectos de codificação e criação de cenários, lógicas de jogo e scripts controladores. Venha conosco e vamos juntos nesta caminhada rumo a novos conhecimentos!

Remédios para todos os males

Relembrando um pouco do enredo proposto para nosso projeto, o conceituadíssimo doutor Tratanildo Doencita desenvolveu um novo e promissor tratamento para diversas doenças, envolvendo o uso de remédios miraculosos conhecidos como pílulas da saúde. Essas pílulas apresentam o formato de um medicamento comum, diferenciadas apenas pela coloração de suas cápsulas.

Cada pílula de cor diferente irá agir contra uma doença em específico, por meio do uso de uma máquina especial, acoplada a uma cama de hospital, responsável por movimentar o corpo dos enfermos de forma a permitir que o fármaco entre em reação no local correto do corpo em que a doença está instalada.

Ainda não desenvolvemos essa máquina especial em nosso projeto, mas já podemos iniciar a construção das pílulas de saúde a partir de alterações em um determinado modelo tridimensional que temos à disposição em nossa lista de assets. Num primeiro momento, iremos expô-las pelo cenário, aproveitando o espaço que as novas prateleiras instaladas nos oferecem.

Sendo assim, mãos à obra! Abra o Unity Hub e clique 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.

Por meio da aba Project, vamos abrir as pastas Assets, Multimedia e, por fim, 3D. Selecione o modelo tridimensional de nome complexPill. Clique e arraste seu elemento em direção ao GameObject CenarioFixo, presente na aba Hierarchy, conforme exemplificado pela imagem a seguir:

Veja que, assim como o verificado ao se inserir os biombos, as plantas e os recipientes de vidro no cenário, o novo objeto inserido aparece listado em azul na área referente à aba Hierarchy, pois seus objetos subordinados derivam diretamente de um arquivo importado para o projeto. Porém, o modelo tridimensional complexPill apresenta alguns objetos subordinados a si que não são desejáveis no momento para nós, como o GameObject Camera, em destaque na imagem a seguir.

Simplesmente excluir o objeto Camera não seria possível neste caso, pois o Unity nos alertaria sobre o fato do recém-inserido GameObject derivar de um arquivo nos mesmos moldes de um Prefab, sendo necessário desempacotá-lo antes de se realizar alterações na ordem interna de objetos subordinados a complexPill.


Como iremos posteriormente utilizar extensivamente esse modelo na construção das pílulas da saúde, seria interessante a realização dessa tarefa para, posteriormente, evitarmos retrabalhos desnecessários.

Para isso, na aba Hierarchy, selecione complexPill. Clique com o botão direito do mouse sobre o elemento e, no menu suspenso apresentado, selecione a opção Prefab e, em sequência, Unpack Completely.

Prefab Variants

Inicialmente, iremos criar uma subpasta dentro de 3D para organizar nossos novos desenvolvimentos em relação às pílulas da saúde. Para isso, na aba Project, com a pasta 3D aberta, clique com o botão direito sobre uma área vazia de sua janela; no menu suspenso, selecione a opção Create e, por fim, Folder.


Dê o nome de NossasPilulas à pasta e abra-a. Criaremos, agora, um novo Prefab, baseado no elemento complexPill já sem a câmera atrelada. Na aba Hierarchy, clique e arraste o objeto complexPill em direção à janela da aba Project. Note que, agora, temos um novo Prefab também de nome complexPill dentro da pasta NossasPilulas:

Renomeie o novo Prefab para Pilula_vermelha, conforme exemplo a seguir:

Agora que já temos um Prefab válido de pílula da saúde na cor vermelha, criaremos variantes do Prefab em outras tonalidades. Utilizando a funcionalidade Prefab Variant, podemos criar Prefabs que mantenham a conexão com o primeiro criado, possibilitando a realização posterior de alterações nas características de todas as formas diferentes de pílulas de saúde sem ter que alterar manualmente cada uma.

Com a pasta NossasPilulas ainda em aberto, clique com o botão direito sobre Pilula_vermelha; no menu suspenso apresentado, selecione a opção Create e, por fim, Prefab Variant.

Dê o nome de Pilula_azul ao novo elemento criado e selecione-o. Note que, inicialmente, ele ainda apresenta a cor vermelha, assim como Pilula_vermelha, porém, após selecioná-lo, algumas informações novas são exibidas na aba Inspector:

Note que o Unity indica que se trata de um Prefab baseado em outro Prefab; no caso, tomando como base Pilula_vermelha.

Antes de editarmos Pilula_azul, vamos criar alguns materials que servirão como referência para as cores que iremos aplicar aos Prefabs derivados de Pilula_vermelha. Com a pasta NossasPilulas em aberto na aba Project, da mesma forma que realizamos nos últimos encontros, crie quatro novos materials a serem armazenados no referido diretório, concedendo-lhes os nomes de matPilula_amarela, matPilula_azul, matPilula_roxa e matPilula_verde, respectivamente.

Selecione os quatro materials e, na aba Inspector, modifique o valor do parâmetro Smoothness para 0, conforme exemplo a seguir:


O parâmetro Smoothness controla quão polido um material aparenta ser em cena. Valores próximos a 0 deixam o material com um aspecto mais fosco. Vide exemplo representado na imagem a seguir:

Agora, para cada um dos quatro materials, iremos alterar os valores de cor presentes no atributo Albedo. Para matPilula_amarela, escolha a cor com os seguintes atributos: R = 255, G = 200, B = 0, A = 255.


Para matPilula_azul, os valores de referência são os descritos a seguir: R = 25, G = 8, B = 255, A = 255.


Em relação a matPilula_roxa, adote a cor que apresenta os seguintes valores: R = 160, G = 0, B = 255, A = 255.


Por fim, mas não menos importante, altere os valores referentes à cor de matPilula_verde conforme indicado: R = 55, G = 180, B = 0, A = 255.


Agora que já temos os quatro materials prontos, na aba Project clique duas vezes sobre o ícone de Pilula_azul para editarmos o novo Prefab.

Note que, após abrirmos Pilula_azul para edição, na aba Hierarchy o símbolo que o representa enquanto Prefab é um pouco diferente do que estamos habituados a ver no editor:


Sempre que avistarmos no editor do Unity GameObjects representados por um ícone azul com uma de suas laterais hachurada, significará que se trata de um Prefab Variant ou de um objeto derivado de um elemento desse tipo.

Na aba Hierarchy, clique sobre o objeto Roundcube. Na aba Inspector, altere o valor de Element 1 do parâmetro Materials de seu componente Mesh Renderer para o material de nome matPilula_azul.

Note, na imagem anterior, que o valor de Element 1 está representado em negrito. Essa representação indica que o valor utilizado é diferente do presente no Prefab original (Pilula_vermelha). Sendo assim, quaisquer alterações que sejam feitas sobre Pilula_vermelha, com exceção das personalizações realizadas para cada um de seus Prefab Variants, serão replicadas para todos os Prefabs.

Feita a mudança, chegou a hora de gerarmos mais três Prefab Variants derivados de Pilula_vermelha. Crie-os e conceda-lhes os nomes de Pilula_amarela, Pilula_roxa e Pilula_verde, respectivamente.

Para cada um dos novos Prefabs, realize a alteração do valor de Element 1 do parâmetro Materials de seus respectivos componentes Mesh Renderer, conforme indicação a seguir:
  • Pilula_amarela: material matPilula_amarela;
  • Pilula_roxa: material matPilula_roxa;
  • Pilula_verde: material matPilula_verde.
Note, a seguir, como estão ficando bacanas os Prefabs de nossos miraculosos medicamentos. Lembre-se de que Pilula_vermelha não precisa de alterações, pois seu material de referência é o mesmo do modelo tridimensional original (complexPill):

Organizando os remédios

Que tal agora posicionarmos alguns medicamentos nos espaços livres das prateleiras do cenário? Antes disso, vamos criar um objeto vazio, subordinado a CenarioFixo, para organizar os medicamentos cenográficos que vamos utilizar.

Na aba Hierarchy, clique com o botão direito sobre CenarioFixo e, no menu suspenso que for apresentado, selecione a opção Create Empty. Dê o nome de PilulasCenograficas ao novo objeto, conforme indicação a seguir:


Apague o objeto complexPill da aba Hierarchy, pois iremos utilizar os novos Prefabs elaborados como base para posicionar os objetos pelo cenário.

Com a pasta NossasPilulas em aberto na aba Project, clique e arraste Pilula_vermelha em direção ao GameObject PilulasCenograficas, na aba Hierarchy. O novo objeto será criado no cenário, subordinado a PilulasCenograficas, conforme podemos conferir a seguir:

Posicione o novo objeto conforme valores de atributos do componente Transform descritos a seguir:
  • Position X = 15, Y = 5.9, Z = 12.6;
  • Rotation X, Y, Z = 0.
Agora, repita a operação de inserção dos novos objetos baseados nos demais Prefabs, todos subordinados a PilulasCenograficas. Após a inserção, conceda novos valores de atributos aos seus respectivos componentes Transform. Para Pilula_amarela, serão estes os valores:
  • Position X = 10, Y = 5.9, Z = 12.6;
  • Rotation X, Y, Z = 0.
Os valores para Pilula_azul são os descritos a seguir:
  • Position X = -2, Y = 7.9, Z = 12.45;
  • Rotation X, Y, Z = 0.
Por sua vez, serão estes os valores para Pilula_verde
  • Position X = -7, Y = 7.9, Z = 12.35;
  • Rotation X, Y, Z = 0.
Finalmente, para Pilula_roxa conceda os seguintes valores:
  • Position X = -13.65, Y = 6.9, Z = -2;
  • Rotation X = 0, Y = 90, Z = 0.
Todos os medicamentos foram posicionados adequadamente sobre as prateleiras, mas é nítido que as proporções físicas dos remédios estão muito aquém do esperado para se enxergar adequadamente a presença das pílulas nos cenários, não concorda? 

Para resolver essa questão, vamos colocar à prova a capacidade de replicação de características dos Prefabs do Unity. Na aba Project, dentro do pasta NossasPilulas, clique duas vezes sobre o ícone do Prefab Pilula_vermelha.

Na aba Inspector, altere os valores dos parâmetros Scale X, Y e Z para 7 e, em seguida, na aba Hierarchy, clique na seta ao lado do nome do Prefab, conforme indicado a seguir:

Observe que todas as pílulas posicionadas no cenário, sejam elas derivadas de Pilula_vermelha ou dos demais Prefab Variants, aumentaram de tamanho:

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

Realizamos hoje uma das mais importantes tarefas no desenvolvimento de Consultório do Dr. Tratanildo, que foi a elaboração inicial das variantes de cada pílula da saúde a ser utilizada no game. Além disso, aprendemos sobre uma importante ferramenta que o Unity nos oferece para evitar retrabalhos, que são os Prefab Variants, utilizando-os na prática como forma de criação dos miraculosos remédios que o doutor Tratanildo Doencita utilizará em breve em seus tratamentos no consultório.

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

Entendo videogames como sendo uma expressão de arte e lazer e, também, como uma impactante ferramenta de educação. No momento, doutorando em Sistemas da Informação pela EACH-USP, desenvolvendo jogos e sistemas desde 2020. Se quiser bater um papo comigo, nas redes sociais procure por @RodrigoGPontes.
Este texto não representa a opinião do GameBlast. Somos uma comunidade de gamers aberta às visões e experiências de cada autor. Escrevemos sob a licença Creative Commons BY-SA 3.0 - você pode usar e compartilhar este conteúdo desde que credite o autor e veículo original.