GameDev

Aprendendo a programar jogos em Unity: o surgimento de uma cama hospitalar no cenário

Posicionaremos os objetos referentes ao leito hospitalar, concluindo a composição visual do elemento cenográfico.

em 28/07/2024
Seja bem-vindo(a) ao GameDev: Aprendendo a programar jogos em Unity de hoje! Em nosso encontro anterior, após darmos uma boa organizada nos assets da cena principal do game, começamos a inserir os elementos relativos ao leito hospitalar de Consultório do Dr. Tratanildo. Hoje, daremos sequência a esta atividade, ajustando a textura e as dimensões da cama hospitalar e introduzindo outros elementos relevantes.


Se esta é a primeira vez que você acessa nossa série, sinta-se à vontade para juntar-se a nós em um divertido processo de aprendizado. A partir do desenvolvimento de diversos projetos práticos, iremos conhecer mais sobre as diversas funcionalidades que a ferramenta Unity nos apresenta para que possamos criar jogos de diversos gêneros.

Desde o primeiro tópico da série são apresentados tanto os passos para se configurar e instalar corretamente a ferramenta em nossos computadores quanto os tópicos envolvendo aspectos de codificação e criação de cenários e de scripts controladores.

Esta é uma ótima oportunidade para você aprender novos caminhos para tirar do papel os jogos que sempre sonhou em tornar realidade, mesmo que nunca tenha tido contato com conceitos relativos à programação de games. Permita-se vir conosco nesta caminhada rumo a novos conhecimentos!

Posicionando a cama

A última inserção de um objeto em cena que realizamos no encontro anterior foi a do GameObject leito_hospitalar, subordinado a Leito, conforme destacado na imagem a seguir:


Apesar de se tratar de um objeto que irá representar a cama hospitalar do leito, suas dimensões originais são muito pequenas, o que impossibilita uma boa visualização em cena. Portanto, iremos iniciar nossas atividades modificando alguns valores de parâmetros de seu componente Transform.

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.

Na aba Hierarchy, selecione leito_hospitalar e, antes de iniciarmos as edições via aba Inspector, vamos aproveitar e renomear o GameObject para Cama.

Com Cama selecionado, na aba Inspector, modifique os valores dos parâmetros de seu componente Transform conforme exemplo a seguir:
  • Position X = 0, Y = 1, Z = 1;
  • Rotation X = 0, Y = 270, Z = 0;
  • Scale X, Y e Z = 5.

Agora já temos a cama pertencente ao leito hospitalar posicionada adequadamente. Contudo, assim como ocorreu com alguns dos outros modelos tridimensionais que importamos para o projeto, o material referente ao modelo não foi aplicado de forma satisfatória como parâmetro do Mesh Renderer do objeto inserido.

Para verificarmos isso, na aba Hierarchy, clique no triângulo ao lado esquerdo de Cama e, em seguida, selecione o objeto subordinado de nome default.


Observando via aba Inspector, note que o material atrelado ao elemento é o de nome defaultMat, sendo importado diretamente do arquivo de modelo tridimensional leito_hospitalar, destacado em azul na imagem a seguir:

Esse material não foi importado corretamente para o Unity, neste caso, o ideal para sua correção será a criação de um novo material, a edição de suas características (texturas, cores, etc.) e a aplicação deste como parâmetro do Mesh Renderer do objeto default.

Como já criamos materials repetidas vezes nos últimos encontros e para que nossas atividades não se tornem muito repetitivas, resolvi deixar preparado um material pré-configurado com os parâmetros adequados de textura e cor. Trata-se do material de nome matLeito, armazenado dentro da pasta leitoMat, dentro de 3D.

Ainda com default selecionado na aba Hierarchy, troque o valor de Element 0 do parâmetro Materials de seu componente Mesh Renderer via aba Inspector para o tal material de nome matLeito, conforme exemplo a seguir:

Note que, embora as duas representações da cama tenham tonalidades bem semelhantes, o uso de texturas por meio da aplicação do material matLeito nos permite ver detalhes adicionais, como a ondulação do lençol sobre a cama.

Controlador físico

Relembrando um pouco do enredo do jogo, já sabemos que doutor Tratanildo Doencita irá realizar os tratamentos em seus pacientes utilizando as pílulas de saúde, porém o paciente deverá estar deitado sobre a cama já que, por meio de inclinações da cama geradas pela máquina, as pílulas conseguirão chegar até os focos de doenças dentro de seu organismo.

A base em cor preta abaixo da cama, de fato, é a máquina que irá “sacudir o esqueleto” dos pacientes, mas ainda é necessário dar ao nosso querido médico o controle literal da movimentação que será realizada.

Para isso, iremos posicionar um controlador físico (um joystick) em formato de totem para que, manuseando o equipamento, o médico consiga realizar as operações necessárias adequadamente.

Dessa forma, na aba Hierarchy, clique com o botão direito do mouse sobre CenarioFixo, selecione a opção 3D Object e, por fim, Cylinder, conforme exemplificado a seguir:


Dê o nome JoystickLeito ao novo GameObject subordinado criado. Selecione-o e, na aba Inspector, altere os valores dos parâmetros de seu componente Transform conforme é indicado a seguir:
  • Position X = 12, Y = 1.75, Z = -11;
  • Scale X = 1, Y = 1.75, Z = 1.
Veja que temos, agora, um pequeno totem cilíndrico próximo ao conjunto “maquinário + cama”. 

Na aba Hierarchy, clique com o botão direito do mouse sobre JoystickLeito, selecione a opção 3D Object e, por fim, Capsule. Dê o nome Manete ao novo objeto criado, selecione-o e, via aba Inspector, altere os valores dos parâmetros de seu componente Transform:
  • Position X = 0, Y = 1.15, Z = 0;
  • Scale X, Y e Z = 0.3.
Acabamos de criar um pequeno manete na extremidade superior de JoystickLeito. Será esse o objeto que o doutor Tratanildo irá manipular, fazendo com que a base da cama realize movimentos de inclinação. Que tal, agora, colorirmos adequadamente JoystickLeito e Manete, reaproveitando padrões e cores de materials utilizados para outros GameObjects?

Selecione JoystickLeito e, na aba Inspector, troque o valor de Element 0 do parâmetro Materials de seu componente Mesh Renderer para o material de nome ground. Repita a operação para Manete, porém escolhendo como valor de Element 0 o material de nome matBaseCama.

Note como os dois objetos ficaram ao usarmos como referência os mesmos materials já utilizados pelo GameObject do chão (no caso de JoystickLeito) e da base da cama (no caso de Manete):

O dono do pedaço

Já estamos com o consultório praticamente pronto, então nada mais justo do que posicionar o dono do estabelecimento adequadamente dentro do ambiente tridimensional.

Para isso, vamos criar mais um grupo de GameObjects na lista hierárquica da aba Hierarchy, clicando com o botão direito sobre ConsultorioScene, selecionando a opção GameObject e, por fim, Create Empty.


Dê o nome de Personagens ao novo objeto criado e certifique-se de que os valores do parâmetro Position de seu componente Transform são todos iguais a zero.

Ainda na aba Hierarchy, clique duas vezes sobre o GameObject Doutor_rindo. Note que o modelo tridimensional do doutor está bem distante dos demais elementos do cenário.

Clique e arraste o objeto em direção ao novo GameObject criado (Personagens), para que Doutor_rindo se torne subordinado ao novo grupo de objetos criado.


Na aba Hierarchy, selecione novamente Doutor_rindo e, na aba Inspector, modifique os valores dos parâmetros de seu componente Transform:
  • Position X = 12.45, Y = 0, Z = -12.9;
  • Rotation X = 0, Y = -45, Z = 0;
  • Scale X, Y e Z = 100.
Olhe só quem apareceu próximo ao leito:

Por enquanto, deixaremos o modelo tridimensional desse excêntrico médico posicionado ao lado do controlador do maquinário do leito.

Para finalizarmos as intervenções de hoje, iremos criar mais um grupo de GameObjects na lista hierárquica da aba Hierarchy, a fim de armazenar as diversas câmeras que utilizaremos em diferentes momentos da jogatina no Consultório do Dr. Tratanildo.

Clique com o botão direito sobre ConsultorioScene, selecione a opção GameObject e, por fim, Create Empty. O nome do novo objeto será Cameras.

Ainda na aba Hierarchy, clique e arraste o GameObject Main Camera em direção à Cameras, deixando-o subordinado ao novo grupo criado.

Por fim, esta será a nossa estrutura principal para organização dos objetos da cena principal: CenarioFixo, contendo os elementos fixos principais da cena; Personagens, contemplando tanto o doutor quanto os pacientes que iremos inserir posteriormente; e Cameras, contemplando os diversos pontos de vista do cenário que iremos configurar em breve.


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

Em nossos próximos encontros daremos prosseguimento ao processo de desenvolvimento, começando a inserir os modelos tridimensionais dos pacientes no cenário e a codificar seus comportamentos gerais em interações com o cená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: Juliana Piombo dos Santos

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.