Aprendendo a programar jogos em Unity: ajustando o leito para os próximos pacientes

Realizaremos um ajuste pontual no projeto para corrigir o comportamento do leito ao se iniciar novos tratamentos.

em 22/02/2026
Seja bem-vindo(a) ao GameDev: Aprendendo a programar jogos em Unity! Após realizarmos interessantes ajustes comportamentais aplicáveis às pílulas e aos agentes de doenças do labirinto em nosso encontro anterior, concluiremos hoje o atual bloco de intervenções sobre o núcleo de nosso jogo corrigindo um comportamento relacionado à inclinação do leito, observável na transição entre dois tratamentos.

Caso esta seja a primeira vez que você está tendo contato com textos de nossa série, considere-se especialmente convidado a juntar-se a nós em uma divertida jornada de aprendizados sobre o mundo do desenvolvimento de jogos.

Por meio da elaboração de projetos de programação de games, estamos tendo a oportunidade de conhecer e de aplicar na prática diferentes técnicas e ferramentas envolvidas no processo de criação de aventuras digitais. Para tal, estamos utilizando a ferramenta Unity como plataforma de apoio ao desenvolvimento de nossos projetos, ferramenta utilizada por grandes estúdios para a elaboração de jogos de diferentes estilos gráficos e de gameplay, tais como Among Us, Cuphead e Super Bomberman R.

A partir do primeiro texto da série são abordados desde os conceitos mais básicos do processo, tais como a instalação e a configuração do Unity em nossos computadores, até os passos em que, de fato, colocamos as “mãos na massa” pra valer, transformando nossas ideias em jogos concretamente desenvolvidos. Esses passos envolvem, dentre outros, a elaboração de scripts controladores de comportamentos e de regras e a configuração dos elementos multimídia em cenários e fases.

Até o momento, já concluímos a produção de dois jogos em nossa série: Forest Ping Pong, uma homenagem ao clássico dos arcades Pong (Atari, 1972), e Motorista da Pesada, um jogo de plataforma bidimensional inspirado em City Connection (Jaleco, 1985). Atualmente, estamos  tirando do papel o puzzle tridimensional Consultório do Dr. Tratanildo, ambientado em um excêntrico consultório médico 3D, cujos aspectos de gameplay prestam homenagem a clássicos como Pac-Man (Namco, 1980) e Dr. Mario (Nintendo, 1990).

Vale a pena conferir, por meio do índice disponibilizado no primeiro texto da série, o processo de desenvolvimento  dos jogos, inclusive podendo experimentar os dois já concluídos diretamente pelo seu navegador.

Não se preocupe se você não teve oportunidades prévias para aprender programação de jogos ou de sistemas, pois nossa série é elaborada de forma a empoderar a todos que queiram criar seus próprios games, mas ainda não sabem nem mesmo por onde começar. Para isso, todos os passos e decisões tomados durante nossos encontros são ilustrados e explicados, permitindo a aplicação dos conceitos apresentados em seus projetos pessoais.

Dito isso, fica aqui o convite: caso queira ver os jogos que sempre sonhou tornando-se realidade, venha trilhar conosco esse caminho repleto de novos conhecimentos e de muita diversão!

Uma inclinação indesejada

Uma das principais mecânicas de Consultório do Dr. Tratanildo envolve o controle da inclinação do leito de nosso consultório, logo após a concessão de pílulas de saúde ao paciente a ser tratado.

Embora o controle da funcionalidade pelos jogadores esteja funcionando adequadamente, após finalizarmos o tratamento de um paciente, a inclinação do leito permanece inalterada, ocasionando situações estranhas, como, por exemplo, pacientes iniciando seus tratamentos completamente inclinados sobre a cama:

Para ajustarmos esse comportamento, será necessária a realização de intervenções sobre o conteúdo de um script controlador. Para tal, vamos abrir o projeto para edição. No Unity Hub, clique duas vezes sobre o item referente a ele. Na interface inicial do editor, na aba Project, abra a pasta AssetsScenes e, por fim, clique duas vezes no ícone da cena ConsultorioScene

Na aba Project, abra a pasta Assets e, em seguida, Scripts. Clique duas vezes sobre o ícone representante do script ControllerFase.

Como o comportamento indesejado é observado sempre que um novo paciente está prestes a ser atendido, realizaremos nossa intervenção de hoje sobre o conteúdo da função AtenderPaciente

Logo após o bloco de códigos correspondente aos procedimentos de ativações e de desativações de objetos, introduza o seguinte conjunto de comandos:

        // Alinhar rotação do leito e do labirino
        foreach (ControllerMov_Labirinto labirinto in FindObjectsOfType<ControllerMov_Labirinto>(true))
        {
            labirinto.transform.eulerAngles = Vector3.zero;
            labirinto.rotacaoCalculada = Vector3.zero;
        }

Os dois GameObjects que apresentam componentes de tipo ControllerMov_Labirinto atrelados a si em cena são a representação visual do labirinto (Labirinto) e o objeto que representa fisicamente o leito no consultório (Leito). Sempre que há uma movimentação da inclinação do leito, por ação direta do jogador, ambos objetos inclinarão, dando a impressão ao gamer de que representam o mesmo elemento da aventura.

Como nem sempre os dois objetos estão ativos simultaneamente em cena, indicamos à FindObjectsOfType a necessidade de se localizar tanto objetos ativos quanto inativos, por meio do parâmetro true fornecido entre os parênteses da função.

O código inserido zera os valores dos vetores correspondentes à inclinação “real” do objeto (transform.eulerAngles) e ao valor calculado internamente por ControllerMov_Labirinto a partir das interações do jogador com o maquinário do leito, concedendo a ambas variáveis o valor Vector3.zero.

Salve o script, feche o Visual Studio e retorne ao editor do Unity visando realizarmos testes de execução. Para tal, após ir à aba Game, clique sobre o ícone do botão Play:

Note que, depois de realizada a correção, ao se iniciar um tratamento, o leito hospitalar não apresenta mais inclinações visíveis, permitindo que o jogador comece a interagir com o paciente sem a influência de intervenções realizadas em tratamentos anteriores.

Ao término da simulação de execução, clique novamente sobre o ícone do botão Play e retorne à aba Scene. 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 Unity.

Próximos passos

Nossa intervenção de hoje, embora mais simples do que as que realizamos nos últimos encontros, corrige um dos bugs mais visíveis do módulo central de nosso game. Dessa forma, podemos considerar que, após uma sequência de intervenções, a mecânica central de nosso jogo está melhor ajustada, nos permitindo, em nossos próximos encontros, focarmos em melhorias para outros aspectos do jogo.

Nosso próximo encontro será no dia primeiro de março. Até mais! Fique sempre ligado nas novidades do 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 4.0).