Aprendendo a programar jogos em Unity: mais correções para a movimentação dos personagens

Seja bem-vindo(a) ao GameDev: Aprendendo a programar jogos em Unity de hoje! Após realizarmos, no encontro anterior, importantes correções para estabilizar o comportamento dos personagens do cenário, fazendo-os parar de flutuar pelo consultório, iremos corrigir outro bug também relacionado às animações de movimentação de Doutor Tratanildo.Caso hoje seja a primeira vez que você teve contato com conteúdos de nossa série, sinta-se especialmente convidado a nos acompanhar em uma divertida jornada de aprendizados sobre o universo do desenvolvimento de games.Elaborando diferentes projetos práticos, estamos desenvolvendo jogos dos mais variados estilos gráficos e de gameplay, o que nos está proporcionando a oportunidade de aprender diferentes conceitos, tais como sobre a codificação das regras e dos objetivos de um game, sobre a inserção em cena de diferentes elementos multimídia e sobre como podemos criar interações entre os diferentes elementos que compõem uma aventura.No momento, estamos trabalhando no projeto Consultório do Dr. Tratanildo, um puzzle ambientado em um consultório médico tridimensional, estrelado por Doutor Tratanildo, um excêntrico médico cujo objetivo de vida é tratar seus pacientes no menor tempo possível por meio do uso de suas miraculosas pílulas de saúde.A partir do primeiro texto, são abordados desde os tópicos básicos de nossa jornada de aprendizado, como a instalação e configuração da ferramenta Unity em nossos computadores, até as etapas mais desafiadoras do processo, como a criação de scripts controladores de comportamentos dos elementos em cena e a disposição adequada de imagens, sons e modelos 3D nas fases de cada game proposto.Venha conosco para que possamos seguir juntos nesta trilha rumo a novos conhecimentos!Uma estranha paralisiaApós a normalização do comportamento “flutuante” do médico e de seu paciente em cena, temos outro desafio a tratar também relacionado ao deslocamento dos personagens em cena: em determinados momentos, ao se interromper a movimentação de Doutor Tratanildo pelo consultório, ele permanece com o corpo todo congelado, sem executar movimentos nem do estados de animação caminhandoState, nem de paradoState, conforme podemos verificar a seguir:Ao analisar mais a fundo o erro, podemos perceber que o problema ocorre apenas ao término da execução da animação de caminhada, quando está se finalizando a execução do estado de animação caminhandoState e pretende-se avançar ao estado paradoState.Nesse caso em específico, o fluxo de animação acaba ficando “preso” durante a transição entre estados, efetivamente deixando o modelo tridimensional congelado, como podemos notar pela simulação de execução retratada na gravação a seguir:Para desvendarmos mais esse mistério, não temos outra escolha senão abrirmos nosso projeto 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.Na aba Project, abra as pastas Assets, Multimedia, 3D e, por fim, Animacoes. Clique duas vezes sobre o ícone do controlador de animações animControllerCaminhando01 para realizarmos ajustes em alguns de seus parâmetros via janela da aba Animator.Inicialmente, clique sobre a pequena seta localizada abaixo do retângulo que representa o estado CaminhandoState, destacada em verde na imagem a seguir:Na aba Inspector, clique sobre a opção Settings e, na lista de opções apresentadas logo após o item, modifique o valor da opção Interruption Source para Next State.A alteração realizada permitirá ao fluxo de animações entender que a prioridade na transição entre estados é seguir para o próximo estado do fluxo (Next State), impedindo indefinições como a que ocorre ao se solicitar transição entre estados “andando” e “parado” no período final da execução do estado anterior.Para que o fluxo seja configurado adequadamente, vamos repetir a operação para as demais setas que representam as transições entre estados. Selecione a seta que vai de caminhandoState para paradoState e realize a mesma intervenção na aba Inspector:Selecione agora a seta localizada abaixo de paradoState e, novamente, altere o valor da opção Interruption Source para Next State também via aba Inspector:Por fim, selecione a seta que liga paradoState a caminhandoState e realize novamente a intervenção proposta:Com todas as transições devidamente configuradas, que tal testarmos a simulação da execução do game para vermos se o comportamento foi corrigido? Para tal, vá até a aba Game e clique sobre o ícone do botão Play:Na ilustração anterior, podemos notar que, mesmo estando a execução da animação próxima ao fim para caminhandoState, a transição entre estados ocorre sem sobressaltos, o que é ótimo, pois evita que haja conflito na execução do fluxo de animações, visto que, por si só, ele não teria condições de decidir se repetiria a execução do estado corrente (por e

Mai 11, 2025 - 22:27
 0
Aprendendo a programar jogos em Unity: mais correções para a movimentação dos personagens
Seja bem-vindo(a) ao GameDev: Aprendendo a programar jogos em Unity de hoje! Após realizarmos, no encontro anterior, importantes correções para estabilizar o comportamento dos personagens do cenário, fazendo-os parar de flutuar pelo consultório, iremos corrigir outro bug também relacionado às animações de movimentação de Doutor Tratanildo.

Caso hoje seja a primeira vez que você teve contato com conteúdos de nossa série, sinta-se especialmente convidado a nos acompanhar em uma divertida jornada de aprendizados sobre o universo do desenvolvimento de games.

Elaborando diferentes projetos práticos, estamos desenvolvendo jogos dos mais variados estilos gráficos e de gameplay, o que nos está proporcionando a oportunidade de aprender diferentes conceitos, tais como sobre a codificação das regras e dos objetivos de um game, sobre a inserção em cena de diferentes elementos multimídia e sobre como podemos criar interações entre os diferentes elementos que compõem uma aventura.

No momento, estamos trabalhando no projeto Consultório do Dr. Tratanildo, um puzzle ambientado em um consultório médico tridimensional, estrelado por Doutor Tratanildo, um excêntrico médico cujo objetivo de vida é tratar seus pacientes no menor tempo possível por meio do uso de suas miraculosas pílulas de saúde.


A partir do primeiro texto, são abordados desde os tópicos básicos de nossa jornada de aprendizado, como a instalação e configuração da ferramenta Unity em nossos computadores, até as etapas mais desafiadoras do processo, como a criação de scripts controladores de comportamentos dos elementos em cena e a disposição adequada de imagens, sons e modelos 3D nas fases de cada game proposto.

Venha conosco para que possamos seguir juntos nesta trilha rumo a novos conhecimentos!

Uma estranha paralisia

Após a normalização do comportamento “flutuante” do médico e de seu paciente em cena, temos outro desafio a tratar também relacionado ao deslocamento dos personagens em cena: em determinados momentos, ao se interromper a movimentação de Doutor Tratanildo pelo consultório, ele permanece com o corpo todo congelado, sem executar movimentos nem do estados de animação caminhandoState, nem de paradoState, conforme podemos verificar a seguir:

Ao analisar mais a fundo o erro, podemos perceber que o problema ocorre apenas ao término da execução da animação de caminhada, quando está se finalizando a execução do estado de animação caminhandoState e pretende-se avançar ao estado paradoState.

Nesse caso em específico, o fluxo de animação acaba ficando “preso” durante a transição entre estados, efetivamente deixando o modelo tridimensional congelado, como podemos notar pela simulação de execução retratada na gravação a seguir:

Para desvendarmos mais esse mistério, não temos outra escolha senão abrirmos nosso projeto 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.

Na aba Project, abra as pastas Assets, Multimedia, 3D e, por fim, Animacoes. Clique duas vezes sobre o ícone do controlador de animações animControllerCaminhando01 para realizarmos ajustes em alguns de seus parâmetros via janela da aba Animator.

Inicialmente, clique sobre a pequena seta localizada abaixo do retângulo que representa o estado CaminhandoState, destacada em verde na imagem a seguir:

Na aba Inspector, clique sobre a opção Settings e, na lista de opções apresentadas logo após o item, modifique o valor da opção Interruption Source para Next State.

A alteração realizada permitirá ao fluxo de animações entender que a prioridade na transição entre estados é seguir para o próximo estado do fluxo (Next State), impedindo indefinições como a que ocorre ao se solicitar transição entre estados “andando” e “parado” no período final da execução do estado anterior.

Para que o fluxo seja configurado adequadamente, vamos repetir a operação para as demais setas que representam as transições entre estados. Selecione a seta que vai de caminhandoState para paradoState e realize a mesma intervenção na aba Inspector:

Selecione agora a seta localizada abaixo de paradoState e, novamente, altere o valor da opção Interruption Source para Next State também via aba Inspector:

Por fim, selecione a seta que liga paradoState a caminhandoState e realize novamente a intervenção proposta:

Com todas as transições devidamente configuradas, que tal testarmos a simulação da execução do game para vermos se o comportamento foi corrigido? Para tal, vá até a aba Game e clique sobre o ícone do botão Play:

Na ilustração anterior, podemos notar que, mesmo estando a execução da animação próxima ao fim para caminhandoState, a transição entre estados ocorre sem sobressaltos, o que é ótimo, pois evita que haja conflito na execução do fluxo de animações, visto que, por si só, ele não teria condições de decidir se repetiria a execução do estado corrente (por estar no final de sua execução) ou se partiria para o próximo estado (por termos interrompido o pressionamento da tecla “seta para cima”).

Interrompa a simulação, clicando novamente sobre o ícone do botão Play. 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

Concluímos, hoje, uma rodada importante de correções de bugs em nosso projeto. É importante, sempre que possível, corrigirmos comportamentos indesejados no projeto de nossos games, pois, por vezes, esses erros podem interferir no comportamento não apenas da funcionalidade afetada, mas, também, de outros módulos e funcionalidades que dependam de um bom funcionamento do game em geral.

Nos próximos encontros prosseguiremos implementando funcionalidades importantes de nosso game, como a efetiva coleta dos medicamentos e o código que permitirá introduzirmos as pílulas de saúde no organismo do paciente a ser tratado.

Nosso próximo encontro será no dia 18 de maio. Até mais! Fique sempre ligado nas novidades do GameBlast!

Revisão: Ives Boitano