Aprendendo a programar jogos em Unity: configurando elementos em cena para a sequência inicial da aventura

Daremos sequência ao processo de configuração das primeiras interações no game entre paciente, médico e consultório.

Seja bem-vindo(a) ao GameDev: Aprendendo a programar jogos em Unity de hoje! Depois de introduzirmos, no encontro anterior, códigos ao script de controle das fases que possibilitarão iniciar as interações entre paciente e médico no começo de cada fase do game, vamos configurar alguns elementos em cena para podermos, posteriormente, ver toda essa interação na prática.

Especialmente a quem está lendo os conteúdos de nossa série pela primeira vez, convidamos a juntar-se a nós em uma divertida jornada de aprendizados sobre o universo do desenvolvimento de jogos digitais.

Utilizando a plataforma Unity como apoio, estamos aprendendo juntos a tirar do papel os games que sempre sonhamos em ver tornarem-se realidade, aprendendo na prática por meio do desenvolvimento de diferentes projetos práticos de programação de jogos.

No momento, estamos trabalhando na elaboração de Consultório do Dr. Tratanildo, um game ambientado em um consultório médico tridimensional, cuja característica principal é a mescla entre aspectos de gameplay de jogos em terceira pessoa e mecânicas de jogo inspiradas em clássicos das décadas de 1980 e 1990, como Dr. Mario (Nintendo) e Pac-Man (Namco).


Não se preocupe se você, até hoje, não teve oportunidades de conhecer aspectos de programação, pois nossa série é preparada de forma a permitir que mesmo quem não tem familiaridade com os aspectos técnicos da área possa criar seu primeiro game e, quem sabe, prosseguir desenvolvendo divertidas aventuras. Inclusive, em nossa série já tiramos do papel dois jogos bidimensionais bem divertidos: Forest Ping Pong e Motorista da Pesada. Garanto que vale a pena experimentá-los!

A partir do primeiro texto da série, são abordadas desde as etapas iniciais de todo esse processo, como a instalação e configuração da ferramenta Unity em nossas máquinas, até a criação, de fato, dos jogos e de suas regras, a codificação dos scripts controladores, a inserção de conteúdos multimídia e afins. Além disso, por meio de um índice de links disponibilizado no primeiro texto, você terá a oportunidade de conferir como foram criados os outros dois jogos citados.

Curtiu essa ideia? Então, não perca tempo: junte-se a nós nesta caminhada rumo a novos conhecimentos!

Configurando elementos

Ao entramos na etapa do projeto responsável por juntar os diferentes módulos que criamos, visando construir uma aventura interligada e coesa, introduzimos ao script controlador de fases novas variáveis e linhas de código que permitirão controlarmos o comportamento dos pacientes e do doutor durante a etapa inicial do fluxo de estados.

Para que tudo funcione corretamente, necessitaremos realizar algumas alterações na estrutura hierárquica dos GameObjects da cena e, também, nos valores de atributos de alguns componentes atrelados aos objetos dos personagens e de Tratanildo Doencita.

Iniciaremos nossas intervenções no projeto abrindo-o para edição. No Unity Hub, clique duas vezes sobre o item referente ao projeto Consultório do Dr. Tratanildo. Na interface inicial do editor, na aba Project, abra a pasta Assets, Scenes e, por fim, clique duas vezes no ícone da cena ConsultorioScene.

Inicialmente, na aba Hierarchy, selecione o objeto ControladorFase. Vamos dar uma olhada agora, via aba Inspector, em como se encontra o componente Controller Fase atrelado ao GameObject:


Note que muitas das variáveis listadas ainda não receberam valores. Ou seja, em diversos momentos, o script ainda não sabe quem deverá acionar para proceder com as atividades que planejamos para as etapas do game.

Vamos tratar, então, de criar e configurar as estruturas em cena para que o script possa realizar as ações a serem tomadas durante as fases de forma adequada. Iniciaremos nossa intervenção pelas novas câmeras, que deverão ser posicionadas de forma a mostrar o paciente chegando ao consultório, falando com o médico e se deslocando ao leito.

Mais câmeras

Na aba Hierarchy, selecione o objeto CameraLeito_01, subordinado a Cameras. Clique com o botão direito sobre o item e selecione a opção Duplicate:


Nomeie o novo GameObject criado como “CameraPosInicialPaciente”, sem as aspas. Selecione-o e modifique os valores dos atributos de seu componente Transform conforme indicado a seguir:
  • Position X = -9.5, Y = 10, Z = 3;
  • Rotation X = 20, Y = 90, Z = 0;
  • Scale X, Y e Z = 1.
Na aba Hierarchy, volte a selecionar CameraLeito_01. Duplique-o, conceda o nome “CameraDialogo” ao novo objeto criado e os seguintes valores aos atributos de seu respectivo componente Transform:
  • Position X = -7, Y = 8, Z = 4;
  • Rotation X = 25, Y = 125, Z = 0;
  • Scale X, Y e Z = 1.
Repita a operação, duplicando novamente CameraLeito_01, concedendo o nome “CameraPacienteIndoLeito” ao GameObject recém-surgido e os seguintes valores aos atributos de seu componente Transform:
  • Position X = 15, Y = 7, Z = -3;
  • Rotation X = 10, Y = -80, Z = 0;
  • Scale X, Y e Z = 1.
Concluídas as inserções de novas câmeras no cenário, vamos introduzir e configurar adequadamente cópias do objeto que representa Doutor Tratanildo nas posições adequadas às cenas retratadas.

Mais médicos

Na aba Hierarchy, selecione o objeto DoutorVitoria, subordinado a Doutores, que, por sua vez, encontra-se subordinado a Personagens. Clique com o botão direito sobre o elemento e selecione a opção Duplicate.


Conceda o nome “DoutorConversa” ao novo GameObject. Ainda na aba Hierarchy, expanda a listagem de seus objetos subordinados, selecione CameraVitoria e delete-o.


Volte a selecionar DoutorConversa e, na aba Inspector, modifique o valor do atributo Controller de seu componente Animator para None (nenhum). Posteriormente, configuraremos a animação correspondente ao momento de conversa entre paciente e médico para esse GameObject.

Por fim, modifique os valores dos atributos de seu componente Transform conforme indicado a seguir:
  • Position X, Y e Z = 0;
  • Rotation X = 0, Y = 70, Z = 0;
  • Scale X, Y e Z = 100.
Volte à aba Hierarchy e selecione novamente DoutorConversa. Clique com o botão direito sobre o objeto e duplique-o. O nome a ser concedido ao novo GameObject é “DoutorTratamento”; iremos posicioná-lo próximo ao totem de controle do maquinário do leito, concedendo os seguintes valores aos atributos de seu componente Transform:
  • Position X = 10, Y = 0, Z = -11.5;
  • Rotation X = 0, Y = 70, Z = 0;
  • Scale X, Y e Z = 100.

Configuração do script controlador e dos objetos em cena

Para que os objetos representantes das câmeras e dos personagens posicionados no cenário sejam ativados nos momentos adequados pelo script controlador da fase, precisaremos desativar alguns GameObjects via editor, evitando a exibição acidental, por exemplo, de “dois Doutores Tratanildos” simultaneamente.

Na aba Hierarchy, selecione os objetos listados a seguir (utilize em conjunto o mouse e a tecla Control de seu teclado para facilitar a seleção):
  • PacienteDeitado, subordinado a Leito (que se encontra subordinado a CenarioFixo);
  • paciente_base, subordinado a Pacientes (que se encontra subordinado a Personagens);
  • Todos os GameObjects subordinados a Doutores;
  • Todos os objetos subordinados a Cameras, exceto CameraPosInicialPaciente;
  • BarraInformacoesAcao, subordinado a Canvas.
Feita a seleção indicada, via aba Inspector, realize a desativação dos GameObjects, conforme ilustrado a seguir:

Por fim, via aba Hierarchy, selecione ControladorFase e conceda novos valores aos atributos de seu componente Controller Fase indicados na lista a seguir:
  • Doutor Conversa: DoutorConversa;
  • Doutor Tratamento: DoutorTratamento;
  • Paciente Cenario: paciente_base;
  • Paciente No Leito: PacienteDeitado;
  • Cam Posicao Inicial Paciente: CameraPosInicialPaciente;
  • Cam Dialogo Paciente Doutor: CameraDialogo;
  • Cam Paciente Indo Ao Leito: CameraPacienteIndoLeito.
Feitas as alterações, 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

Dando sequência ao processo que iniciamos no encontro anterior, prosseguimos configurando o ambiente para que a aventura discorra o mais próximo possível do que planejamos no desenho do fluxo de estados.

Em nosso próximo encontro, continuaremos a configurar os elementos do cenário, o que permitirá, no futuro, que a etapa inicial do jogo ocorra adequadamente, permitindo a posterior livre exploração do consultório pelo jogador.

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
Siga o Blast nas Redes Sociais
Rodrigo Garcia Pontes
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. Você pode compartilhar este conteúdo creditando o autor e veículo original (BY-SA 3.0).