Cursos / Jogos Digitais / Desenvolvimento com Motores de Jogos I / Aula
A próxima animação adicionada ao nosso personagem é a animação de caminhada, sendo essa animação utilizada toda vez que ele começar a se mover. A animação de Idle se manterá enquanto ele estiver parado e, quando começar a se mover horizontalmente, de acordo com o comando do usuário, o robô receberá a animação de caminhada, até voltar a estar parado. Veja na Figura 1 como acontecerão essas animações:
Percebe haver na definição desse comportamento, claramente, uma transição de estados declarada? Nós estamos no estado base, que é o estado de parado, ou Idle, e então passamos a um outro estado quando algo acontece. Uma transição, dentro de uma máquina de estados, é justamente isso: uma condição para, dada uma nova situação ou uma nova entrada, haver uma mudança de estados dentro da máquina. É importante também, no entanto, haver uma maneira de a máquina sair do estado no qual acaba de entrar, a fim de evitar que ela fique presa lá para sempre.
No caso descrito, a condição de saída para o nosso robô parar de se movimentar é justamente a movimentação se encerrar. Quando ele voltar ao estado de parado, a animação de caminhada deve se encerrar e dar lugar, mais uma vez, à animação de repouso. Parece bem simples, não? E é! Como fazemos, em qualquer um de nossos códigos, quando queremos depender de um estado? Criamos uma variável que monitore isso, correto? E é exatamente o que faremos! Teremos, em nossa máquina de estados, uma variável responsável por monitorar se há ou não movimento em nosso personagem. Caso o movimento se inicie, a alteração dessa variável indicará para o nosso controlador que deve haver também uma alteração na animação executada por ele.
Faremos melhor ainda! A fim de não ficar tão brusca a mudança, de modo que qualquer coisinha faça o nosso robozinho começar a se mover “loucamente”, utilizaremos, em vez de uma booleana, uma variável do tipo ponto flutuante, para, somente ao passar de um limite mínimo de velocidade, o robozinho começar de fato a realizar o movimento de caminhada e, também, para o movimento se encerrar um pouco antes de o robô chegar ao repouso total. Isso evita que a animação do robô pareça estar desproporcional, com muito movimento sendo realizado, mas com o robô praticamente sem sair do canto (com uma velocidade muito baixa).
A partir dessa nossa conversa inicial, podemos observar quatro pontos importantes: precisamos criar a nova animação do robô, criar uma variável dentro de nossa máquina de estados para registrar o movimento ou não do nosso robô, adicionar a transição entre os estados criados para o nosso robô e, por fim, fazer um script que, de alguma maneira, seja capaz de se comunicar com o nosso Animator, alterando a variável criada para a animação poder realizar suas transições adequadamente. A seguir, realizaremos esses quatro passos, nessa ordem!
Versão 5.3 - Todos os Direitos reservados