Aprendendo a programar jogos em Unity: começando a mobiliar o ambiente com biombos

Prosseguiremos construindo o cenário do game, posicionando elementos que irão ajudar na delimitação do espaço.

em 23/06/2024
Seja bem-vindo(a) ao GameDev: Aprendendo a programar jogos em Unity de hoje! Agora que já temos um teto devidamente implementado em nosso projeto, começaremos a inserir elementos adicionais na cena, transformando-a pouco a pouco de um simples salão vazio a um ambiente apto a receber as grandes e excêntricas aventuras de Consultório do Dr. Tratanildo.



Se esta é a primeira vez que você acessa a série, junte-se a nós para aprendermos juntos a codificar games e ambientes virtualizados utilizando a ferramenta Unity. A partir do primeiro tópico da série, você terá a oportunidade de descobrir na prática como utilizar essa ferramenta, desde sua instalação e configuração até a criação e desenvolvimento de interessantes projetos, podendo assim desenvolver habilidades que irão lhe auxiliar a tirar do papel os jogos que sempre sonhou em criar.

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

Ocultando o teto

Em nosso encontro anterior, realizamos a inserção e personalização da aparência do teto do ambiente, além de posicionarmos alguns pontos de iluminação interna adicionais. Agora que já temos as estruturas básicas do ambiente tridimensional devidamente posicionadas, começaremos a inserção de elementos decorativos.

Para isso, vamos abrir o projeto do jogo para iniciar as devidas edições no cenário. 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.

Certifique-se de que a aba Scene está selecionada para darmos prosseguimento à montagem do consultório. A visualização da cena será parecida com a ilustrada pela imagem a seguir:

Um erro comum durante o desenvolvimento do layout de um ambiente ocorre quando desativamos temporariamente determinado objeto para se acessar melhor certas partes de um cenário e, ao terminarmos o processo, acabarmos nos esquecendo de reativá-lo.

Para evitar esse tipo de situação, o Unity oferece um recurso para desativar a visualização e seleção de objetos apenas no modo de edição, permitindo, por exemplo, ocultarmos o teto enquanto trabalhamos no cenário interno sem prejuízo à composição final do cenário.

Para tal, na aba Hierarchy, selecione o GameObject Teto e clique sobre o símbolo de um olho, presente na extremidade esquerda de seu item na lista, conforme exemplo a seguir:

Note que, na visualização provida pela aba Scene, o teto foi ocultado, mas, ao se clicar sobre a aba Game, percebemos que não houve impacto na composição do cenário. Isso significa que, ao término da construção do game, o teto estará posicionado adequadamente, visualizável ao jogador:

Biombo

Agora que ocultamos Teto com segurança, podemos trabalhar dentro do cenário tranquilamente. Volte à aba Scene para começarmos a inserir objetos no ambiente. O primeiro elemento físico que iremos posicionar será um biombo.

Para quem não o conhece pelo nome, um biombo é uma estrutura flexível de paineis utilizada para delimitar espaços em um ambiente. Normalmente é utilizado em hospitais na delimitação de leitos, assemelhando-se a uma “parede dobrável”. A imagem a seguir ilustra o uso de um biombo em um ambiente médico:

 
Agora, mãos à obra: na aba Project, abra a pasta Assets, em seguida Multimedia e, por fim, 3D. Clique e arraste o modelo tridimensional biombo em direção ao item CenarioFixo da aba Hierarchy, conforme exemplo a seguir. Um novo GameObject será inserido em cena, subordinado a CenarioFixo.

Iremos utilizar esse modelo tridimensional como um interessante recurso para realizar uma pequena divisão do espaço da sala em que posicionaremos, posteriormente, o leito em que os pacientes repousarão.

Na aba Hierarchy, selecione o objeto biombo. Renomeie-o para Biombo_1 e, na aba Inspector, modifique os parâmetros de seu componente Transform para os valores descritos a seguir:
  • Position X = 24, Y = 0, Z = -10;
  • Scale X, Y e Z = 3.

Textura ausente

Embora posicionado adequadamente e de dimensões adequadas, uma característica do objeto em questão ainda não está plenamente configurada: as cores e texturas do objeto. Note que, embora o formato do objeto esteja adequado, temos um modelo tridimensional totalmente branco. Isso ocorre porque nem sempre as texturas relacionadas aos materials de um modelo tridimensional são adequadamente importadas ao editor do Unity.

Para evidenciar essa situação, na aba Hierarchy, clique duas vezes sobre Biombo_1 para focarmos a visualização da aba Scene no referido objeto. Ainda na aba Hierarchy, clique sobre o pequeno triângulo ao lado esquerdo de Biombo_1, evidenciando os objetos subordinados que o compõem, e selecione o GameObject 1_wheel.

Podemos notar que existe um material referenciado no componente Mesh Renderer do objeto selecionado (Material.001), presente na estrutura interna do arquivo de origem do modelo tridimensional que representa o biombo, conforme destacado na ilustração a seguir:


Na aba Project, ao se clicar sobre o material em questão, a aba Inspector exibirá alguns parâmetros em tela que não poderão ser editados, representados pela cor cinza.


Note, ainda na aba Project, que de fato temos uma textura à disposição pronta a ser aplicada no objeto que representa o biombo:

Para resolver essa questão, da mesma forma que fizemos em relação ao teto do cenário, iremos criar um material novo (externo ao arquivo de origem do modelo 3D). Referenciaremos o arquivo de textura do biombo ao novo material e, por fim, substituiremos o valor do parâmetro Material do componente Mesh Renderer para os GameObjects que compõem Biombo_1.

Criando um novo material

Certifique-se de que a pasta 3D esteja aberta na janela da aba Project. Clique com o botão direito sobre uma área vazia da janela e, no menu suspenso, selecione a opção Create e, por fim, Material.

O nome do novo material será “MaterialBiombo”, sem as aspas. Selecione-o para editarmos suas propriedades.

Na aba Inspector, clique sobre o quadradinho presente do lado esquerdo do parâmetro Albedo. Na janela que for apresentada, procure pela textura de nome biomboAzul e selecione-a.

Agora, na aba Hierarchy, selecione os dois objetos subordinados à Biombo_1 (1_wheel e 3_wheels). Na aba Inspector, troque o parâmetro Element 0 de Materials do componente Mesh Renderer para o material de nome MaterialBiombo, conforme exemplificado a seguir:

Observe que interessante ficou a apresentação do GameObject em cena agora. Muito melhor, não?

Por fim, na aba Hierarchy, vamos clonar o objeto Biombo_1, clicando com o botão direito sobre o item e selecionando a opção Duplicate. Renomeie a cópia para Biombo_2, selecione-o e, via aba Inspector, altere o valor do parâmetro Position X de seu elemento Transform para 15.5, conforme ilustrado a seguir:

Clique sobre a aba Game e veja o resultado do que realizamos até o momento. Agora podemos afirmar que temos um espaço de fato reservado para posicionar posteriormente o leito.

Volte à aba Scene e 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 a inserção de um interessante elemento em nosso cenário, que nos ajudará a compor a “atmosfera médica” deste consultório em construção. Além disso, aprendemos como solucionar determinados problemas envolvendo a não aplicação de texturas por meio da criação e utilização de novos materials por GameObjects oriundos de modelos tridimensionais.

Em nosso próximo encontro, continuaremos a construir o interior do consultório, posicionando novos elementos e realizando os devidos ajustes necessários para que, em breve, tenhamos um ambiente apto a receber as aventuras desse nosso novo projeto.

Nosso próximo texto já encontra-se disponível, continue conosco nessa jornada de conhecimento e fique ligado sempre aqui no GameBlast!

Revisão: Davi Sousa

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.