Aprendendo a programar jogos em Unity: congelando o comportamento dos monstrinhos e das pílulas

Modificaremos a forma com a qual pílulas e agentes de doenças interagem com o labirinto durante determinadas etapas do tratamento.

em 15/02/2026
Seja bem-vindo(a) ao GameDev: Aprendendo a programar jogos em Unity! Dando sequência ao processo de correção de bugs que iniciamos em nosso encontro anterior, ajustaremos hoje determinados comportamentos apresentados durante a exibição do labirinto, visando deixar os desafios mais controláveis e previsíveis aos bravos jogadores de nossa aventura.

Caso hoje seja a primeira vez que você teve contato com textos de nossa série, aproveite essa experiência para conhecer mais sobre esta divertida jornada de aprendizados sobre o mundo do desenvolvimento de jogos digitais que estamos trilhando periodicamente no GameBlast.

Elaborando diferentes projetos práticos de programação de games, a cada encontro estamos tendo a oportunidade de aprender um pouco mais sobre as técnicas e as ferramentas envolvidas na criação de divertidas aventuras digitais. Para isso, estamos utilizando como apoio durante a elaboração dos jogos a plataforma de desenvolvimento de jogos Unity, também adotada por inúmeros estúdios para a criação de jogos relevantes, tais como Among Us, Cuphead e Super Bomberman R.

A partir do primeiro texto da série, abordamos os passos necessários para o processo de desenvolvimento de um jogo, incluindo aqueles considerados mais “básicos”, como a instalação e a configuração do Unity em nossos computadores. Etapas importantes do processo, como a configuração e o posicionamento de elementos multimídia das fases e a elaboração dos scripts controladores de comportamentos e de regras de um game, são abordadas paulatinamente, sempre com explicações sobre os códigos, técnicas e ferramentas utilizadas, justamente para permitir a todos tirarem do papel os jogos que sempre sonharam em ver no “mundo real”.

No momento, estamos elaborando o game Consultório do Dr. Tratanildo: trata-se de um puzzle tridimensional ambientado em um excêntrico consultório médico, cujos aspectos de gameplay remetem tanto a clássicos dos arcades e dos videogames, como Pac-Man (Namco, 1980) e Dr. Mario (Nintendo, 1990), quanto a jogos dos primórdios do 3D, como Tama (Time Warner Interactive, 1994).


Vale muito a pena conferir, por meio do índice disponibilizado no primeiro texto da série, todo o processo de desenvolvimento do game até o momento, além de conhecer os outros dois jogos que já elaboramos durante o decorrer desta série: Forest Ping Pong Motorista da Pesada.

Depois de toda esta introdução, fica aqui o convite: se você quer aprender a criar suas próprias aventuras virtuais “do zero”, junte-se a nós em uma trilha de aprendizados repleta de novos conhecimentos e de muita diversão!

Dois Tratanildos no pedaço?!

Depois de realizarmos importantes ajustes relacionados à tela de game over de nosso game, vamos prosseguir com nossa “caçada aos bugs” lançando um olhar especial ao tratamento do paciente em si, ou seja, a alguns aspectos relacionados às interações entre os agentes de doenças e as pílulas miraculosas dentro do labirinto.

Da forma em que configuramos nossa aventura até agora, no momento em que Tratanildo está buscando medicamentos para o tratamento, os agentes de doenças e as pílulas presentes no labirinto continuam a interagir com o ambiente, seja por meio da ação da gravidade (medicamentos “rolando” pelo cenário), seja pela programação do comportamento de caminhada dos monstrinhos.

Embora seja interessante e, até certo ponto, “fiel” à realidade, a interação desses elementos sem um controle direto do jogador pode ocasionar situações em que, aparentemente, o paciente se cura sem a necessidade de movimentações do maquinário atrelado ao leito, criando momentos esquisitos como esse:

Note que a conclusão do desafio ocorre enquanto o médico está caminhando pelo cenário, ocasionando até a engraçada situação de termos “dois Tratanildos” dentro do consultório.

É possível impedir a presença de dois médicos em cena, por meio da configuração de novas estruturas de código, porém, visando aumentar o engajamento do jogador nas atividades, vamos configurar o jogo para que somente haja movimentações de monstrinhos e das pílulas no labirinto nos momentos em que o labirinto estiver à vista do jogador.

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.

O primeiro passo envolverá criarmos uma nova estrutura, responsável por ativar ou desativar o comportamento de pílulas e de agentes de doenças.

Melhorando o controle das pílulas no labirinto

Ao final do conteúdo de ControllerFase, imediatamente antes do último fechamento de chaves do arquivo, introduza o seguinte bloco de códigos:

    public void PausarPilulasAgentes(bool pausar)
    {
        foreach (Rigidbody pilulaTratamento in FindObjectsOfType<Rigidbody>())
            if (pilulaTratamento.tag.StartsWith("medicamento"))
                pilulaTratamento.isKinematic = pausar;

        foreach (ComportamentoDoenca agenteDoenca in FindObjectsOfType<ComportamentoDoenca>(true))
            agenteDoenca.enabled = !pausar;
    }

Por meio do método PausarPilulasAgentes, poderemos acionar em diferentes momentos o recurso para pausar ou retomar o comportamento esperado de pílulas e de agentes de doenças do labirinto.

Para selecionarmos apenas as pílulas de saúde pertencentes ao labirinto, foi necessário tomar uma sequência de ações, condensada no primeiro bloco de comandos:
  • Inicialmente, selecionamos todos os objetos ativos da cena que contivessem atrelados a si componentes do tipo Rigidbody. É o caso das pílulas presentes no labirinto, diferentemente das pílulas encontráveis nas prateleiras ou nas mãos do médico.
  • Posteriormente, para cada objeto localizado cuja Tag for iniciada pela palavra “medicamento”, a propriedade isKinematic é alterada para o valor representado pela variável pausar.
Em relação aos Rigidbodies, a propriedade isKinematic indica ao Unity se aquele objeto deve reagir ao conjunto de atributos de física apresentados pelo jogo no momento. Caso seu valor seja verdadeiro (true), tanto a gravidade quanto a ação de inclinações, de colisões e de forças não serão aplicados ao objeto em questão, e é esse o comportamento que desejamos ao solicitarmos uma pausa para as pílulas do labirinto.

Já a segunda metade dos comandos refere-se aos agentes de doenças. Como a movimentação dos monstrinhos é controlada por ação direta do script ComportamentoDoenca, ao desativarmos o componente para o objeto em questão, acabaremos interrompendo a realização das ações.

Com a função devidamente codificada, é hora de introduzirmos chamadas à ela dentro de algumas estruturas-chave de ControllerFase. Dentro do conteúdo do método TransicaoParaTratamento, imediatamente antes do bloco de comandos correspondente às condições para iniciar trilha sonora de ação, introduza as seguintes linhas de código:

        // Pausar os comportamentos das pílulas e dos agentes de doenças
        PausarPilulasAgentes(true);

Solicitaremos a pausa das pílulas e dos agentes dentro de TransicaoParaTratamento pois seu código é executado em diversos momentos em que a visualização do labirinto sai de cena:
  • Logo após a “espiadinha” no labirinto, que ocorre assim que o paciente se deita sobre a cama hospitalar;
  • Assim que a breve visualização do labirinto, que ocorre quando concedemos pílulas ao paciente, termina;
  • No momento em que o jogador decide parar de manejar o maquinário do leito, retornando ao controle do doutor pelo cenário.
Agora, dentro das chaves da Coroutine MostrarLabirintoPacientes, imediatamente antes do comando yield return new WaitForSeconds, insira a seguinte linha de código:

        PausarPilulasAgentes(false);

O comando será útil para que, assim que o labirinto for exibido em cena, as pílulas e os agentes de doenças não estejam pausados, apresentando os comportamentos esperados para cada elemento.

Salve o script, feche o Visual Studio e, voltando ao editor do Unity, realize uma simulação de execução, indo à aba Game e clicando sobre o ícone do botão Play:

Dá para notar que os elementos internos do labirinto respeitam a pausa determinada pelos comandos que codificamos, o que é bem interessante.

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

Realizamos mais um ajuste ao núcleo do jogo, corrigindo comportamentos visíveis ao se controlar o labirinto que, embora não sejam tecnicamente errados, podem passar uma sensação de imprecisão sobre a jogabilidade de nosso game.

Em nosso próximo encontro, daremos sequência aos ajustes propostos, além de prepararmos o terreno para novas intervenções, visando completarmos o ciclo de funcionalidades que estarão presentes em Consultório do Dr. Tratanildo.

Nosso próximo encontro será no dia 22 de fevereiro. 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).