Aprendendo a programar jogos em Unity: organizando objetos e iniciando a construção do leito

Finalizaremos a construção do ambiente interno do consultório e iniciaremos o posicionamento dos objetos referentes ao leito hospitalar.

em 21/07/2024
Seja bem-vindo(a) ao GameDev: Aprendendo a programar jogos em Unity de hoje! Após uma extensa etapa de construção e posicionamento de diversos GameObjects referentes ao cenário de nossa aventura, tais como as pílulas de saúde que posicionamos sobre as prateleiras em nosso encontro anterior, hoje iremos posicionar adequadamente o leito sobre o qual repousarão os pacientes que vierem a ser atendidos no glorioso Consultório do Dr. Tratanildo. Além disso, iremos organizar os objetos que inserimos em cena até o momento para melhor manutenibilidade do projeto.


Se esta é a primeira vez que você acessa nossa série, junte-se já a nós e venha aprender, de forma prática e divertida, muitos conceitos interessantes sobre o desenvolvimento de jogos utilizando a plataforma Unity.

A partir do primeiro texto da série, por meio da elaboração de diferentes projetos, você terá a oportunidade de, pondo a mão na massa, criar games de diversos estilos, podendo adquirir conhecimentos valiosos sobre várias funcionalidades e processos que a ferramenta nos coloca à disposição para, quem sabe, tirar do papel aquele jogo que sempre sonhou em tornar realidade.

Venha conosco e vamos juntos nesta caminhada rumo a novos conhecimentos!

Posicionando pilastras

Anteriormente, quando realizamos a descompactação dos elementos iniciais do cenário, deixamos um dos itens reservado para uso futuro; no caso, o GameObject de nome wall_pilar. Iremos iniciar nossa edição utilizando-o como forma de deixar as quinas do consultório arredondadas, dando um ar mais sofisticado  a um ambiente que, mesmo com tantas intervenções, ainda está um pouco quadradão.

Vamos iniciar as edições abrindo o 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.

Na aba Hierarchy, selecione o objeto wall_pilar. Na aba Inspector, ative o objeto, clicando na caixa de seleção ao lado do seu nome, conforme exemplificado pela imagem a seguir:

Volte a selecionar o objeto via aba Hierarchy e renomeie-o para Pilastra_1. Edite os valores dos atributos de seu componente Tranform conforme indicado a seguir:
  • Position X = 28.5, Y = 5, Z = 13;
  • Rotation X = 0, Y = 45, Z = 0;
  • Scale X, Z = 0.
Realize o processo de duplicação de Pilastra_1 por três vezes, concedendo para os novos GameObjects os nomes Pilastra_2, Pilastra_3 e Pilastra_4, respectivamente.

Agora iremos editar os valores dos atributos dos componentes Tranform de cada um dos novos objetos. Para Pilastra_2, serão os seguintes valores:
  • Position X = -14, Y = 5, = 12.5;
  • Rotation X = 0, Y = -45, Z = 0.
Para Pilastra_3, os valores a serem inseridos são estes:
  • Position X = 29, Y = 5, = -22.5;
  • Rotation X = 0, Y = -45, Z = 0.
Por fim, altere os valores de Pilastra_4 conforme indicado a seguir:
  • Position X = -13.5, Y = 5, Z = -23;
  • Rotation X = 0, Y = 45, Z = 0.
Os objetos ficarão posicionados em cena conforme destacado na imagem:

Organização dos GameObjects

Já realizamos a inserção e o posicionamento de diversos objetos em cena nos últimos encontros; alguns mais voltados à composição da estrutura física do consultório em si e outros com características mais decorativas. Porém, até o momento, estamos armazenando os GameObjects inseridos majoritariamente como sendo subordinados a CenarioFixo, o que acaba por prejudicar um pouco a localização de determinados itens, devido a termos mais de 20 GameObjects na mesma listagem apresentada na aba Hierarchy.

Portanto, para organizar melhor os elementos pertencentes à cena, iremos criar subgrupos de objetos dentro da estrutura de GameObjects hierarquicamente ligados a CenarioFixo. Vamos iniciar pelo subgrupo de elementos que façam parte da ambientação do consultório.

Na aba Hierachy, clique com o botão direito sobre CenarioFixo e selecione a opção Create Empty, conforme exemplo a seguir:

Dê o nome Ambientacao ao novo objeto criado, certificando-se de que os valores do atributo Position (X, Y, Z) de seu componente Transform são todos iguais a zero.

Na aba Hierarchy, selecione todos os objetos subordinados a CenarioFixo, com exceção de Ambientacao, de PilulasCenograficas e dos GameObjects que representam lâmpadas. Clique e arraste os objetos selecionados em direção ao item Ambientacao.

Após a realização da ação, os itens representados na imagem a seguir estarão subordinados ao GameObject Ambientacao:


Iremos, agora, agrupar os objetos que fazem parte do grupo de itens que influenciam na iluminação do ambiente. Na aba Hierarchy, novamente iremos criar um novo objeto subordinado a CenarioFixo, clicando com o botão direito sobre o referido GameObject e selecionando a opção Create Empty. Vamos conceder o nome Iluminacao ao novo objeto criado.

Selecione os GameObjects Lampada1, Lampada2, Lampada3, Lampada4 (subordinados a CenarioFixo) e Directional Light. Clique e arraste todos em direção ao item Iluminacao. Todos estarão subordinados ao referido GameObject, conforme a imagem a seguir ilustra:


Agora que temos nossos elementos melhor organizados, chegou a hora de começar a construção do leito.

Posicionando a base

A primeira etapa da confecção do leito hospitalar envolverá a criação de mais um objeto para organização de seus elementos internos. Na aba Hierachy, clique com o botão direito sobre CenarioFixo e selecione a opção Create Empty. O nome do novo objeto será Leito.

Altere os valores dos parâmetros do componente Transform de Leito conforme segue:
  • Position X = 21, Y = 0, Z = -16.75.
O GameObject Leito contemplará tanto a base de sustentação da cama hospitalar quanto o leito propriamente dito.

Clique com o botão direito sobre Leito e, no menu suspenso, selecione a opção 3D Object e, em seguida, Cube:

Dê o nome BaseCama ao novo GameObject criado. Os valores dos atributos de seu componente Transform deverão ser trocados pelos descritos a seguir:
  • Position X = 0, Y = 0.5, Z = 0;
  • Scale X = 16, Y = 1, Z = 10.
Sobre essa plataforma será posicionada, de fato, a cama em que os personagens deitarão para receberem os tratamentos. Essa plataforma existe pois será a máquina responsável pelas movimentações que levarão as pílulas de saúde aos locais corretos, dentro do corpo dos pacientes.

Vamos alterar a cor da base, criando um novo material e atrelando ao componente Mesh Renderer de BaseCama. Na aba Project, abra as pastas Assets, Multimedia, 3D e, por fim, leitoMat.

Já temos dentro dessa pasta as texturas e os materials que serão importantes na configuração da cama do leito, mas vamos aproveitar a pasta para armazenar, também, um material adicional, referente à base. Em um espaço vazio da janela Project, clique com o botão direito, selecione Create e, por fim, Material. Dê o nome matBaseCama ao novo material criado, conforme exemplificado a seguir:

Na aba Inspector, modificaremos os valores dos parâmetros descritos a seguir:
  • Cor de Albedo: R = 64, G = 64, B = 64, A = 255;
  • Metallic = 1;
  • Smoothness = 1.

Nosso novo material se parecerá com um metal escuro, de aparência bem polida, diferente dos outros elementos que inserimos até o momento. Na aba Hiearchy, selecione BaseCama e troque o valor de Element1 do parâmetro Materials de seu componente MeshRenderer para o novo material criado (matBaseCama). Veja como ficou a base em cena:

Agora, vamos posicionar a cama logo acima da base recém-inserida. Na aba Project, abra as pastas Assets, Multimedia e, por fim, 3D. Procure pelo modelo tridimensional de nome leito_hospitalar. Selecione-o, depois clique e arraste seu item em direção a Leito, presente na aba Hierarchy. Um novo elemento de nome leito_hospitalar surgirá como um objeto subordinado a leito, conforme a imagem a seguir ilustra:


Por enquanto, ainda não podemos ver o novo objeto em cena, pois suas dimensões ainda são bem menores do que o que precisamos para deixá-lo adequadamente posicionado em cena; mas essa tarefa iremos concluir em nosso próximo encontro.

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

Iniciamos hoje a tão sonhada etapa de construção do leito de nosso consultório. Como havíamos introduzido diversos elementos em cena, foi necessário também realizar uma organização prévia do ambiente, para que possamos prosseguir de forma mais tranquila em nossas atividades futuras.

Em nosso próximo encontro iremos configurar adequadamente a cama do leito sobre a base inserida e acrescentaremos elementos adicionais que pertencem ao novo equipamento médico presente em Consultório do Dr. Tratanildo.

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.