Nesta palestra, quero falar sobre animação e como isso afeta sua tradução ou a movimentação
de seus personagens. Se você quiser acompanhar,
faça o download do projeto inicial de animação com esta palestra e abra-o. Dentro você encontrará dois personagens, então eu
tenho um personagem zumbi e o pequeno lenhador que usamos anteriormente.
Pressione Play e você verá que eles fazem o giro e o deslizamento, avançando até chegarem ao
seu cubo de meta, que você também pode percorrer pela cena.
Agora, o problema com as animações deles no momento, se você der uma olhada, é que eles estão patinando
ou escorregando pelo chão.
Agora isso é porque nós os movemos muito rapidamente.
Então pare de jogar. O script que eu anexei a cada um é o MoveLocal e
é baseado no script que vimos antes, mas expus a Velocidade para que possamos alterá-la.
Vamos mudar a velocidade do lenhador e de Jill, o zumbi, para 0. 5) Ok, agora pressione Play
novamente.
No caso do lenhador, ele parece estar dando passos e se impulsionando para a frente, e não
há muita derrapagem lá.
Então, seu ciclo de caminhada é bastante simples, tanto quanto um pé e o outro. Com Jill, ela tem um ciclo
de caminhada muito mais complicado, onde não está caminhando em linha reta.
Ela está escorregando e patinando com os pés de um lado para o outro e, portanto, dentro de sua animação.
Ela tem um movimento de propulsão para a frente e somos nós que tentamos mover esse modelo com o nosso código que também está
em conflito com os movimentos dela, que já está inserido em sua animação.
Agora, não quero abordar as complexidades da animação do Unity porque está abrindo uma enorme lata de worms,
mas quero mostrar algumas coisas diferentes que você pode fazer para corrigir esse problema.
Primeiro, vamos olhar para Jill porque as animações dos lenhadores são boas.
Portanto, se você achar que pode controlar seu personagem animado, mova-o com suas traduções e alinhe-o perfeitamente para que
a velocidade da animação e a velocidade com que você o mova com seu código
sejam sincronizadas, tudo bem.
Mas se você acabar com um modelo complicado como esse zumbi, por exemplo, poderá precisar de uma maneira
diferente de impulsioná-los para a frente.
Felizmente, o sistema de animação humanóide no Unity já pode impulsionar os personagens com base em
suas animações.
Então, vamos apenas a Jill e o que faremos é desmarcar o MoveLocal.
Não queremos esse código nela. Então, o que vamos fazer é descer o Animator. O Animator possui
o controle de animação do personagem.
Agora, o que você pode fazer com um personagem humanóide é marque uma caixa chamada Apply Root Motion.
O que isso fará é mover seu personagem no mundo, conforme a animação move o personagem.
Se você pressionar Play no momento sem nenhum script, a animação dela não a está movendo e é por isso que
ela está escorregando no chão porque, no arquivo de animação real, ela está avançando.
Para ver isso, clique em Jill e depois no Inspetor, marque a caixa Aplicar movimento de raiz e depois vamos
dar um zoom em Jill aqui também, para que possamos vê-la se movendo. Em seguida, pressione Play e agora sem nenhum código,
a própria animação a está movendo para frente e veja como é mais natural.
Seus pés parecem que estão plantados e ela está se movendo, mas seu movimento para
frente não é linear, portanto, tentar impulsioná-lo com um Translate não funcionará.
Se você já tem esse tipo de movimento para a frente na animação,
tente usar isso para sua vantagem. Isso fará com que o movimento do seu personagem pareça muito mais natural.
Então, para testar usando as animações para impulsionar Jill para a frente, primeiro volte para o script MoveLocal que está
nela.
Em seguida, abra esse script e o que você deseja fazer é remover qualquer
código relacionado ao envio do caractere, que é
de fato essa transformação aqui em baixo. Também estamos testando a distância e precisaremos comentar isso também, caso
contrário, não faremos nada quando atingirmos a meta. Salve isso e vamos voltar para o Unity.
O que vamos fazer com o lenhador é desligá-lo, porque não estamos fazendo isso por
ele e vamos interpretar Jill e veremos agora que suas animações a estão levando para frente. Ela ainda está escorregando por causa do
slerp que está lá.
Então isso também está afetando isso.
Você pode ver que o movimento dela é muito mais natural agora. Para fazê-la se virar com o próprio sistema de
animação, você
também precisaria de uma animação de zumbi associada a ele. Agora, porque ela não está atingindo a meta (ela só vai
dar voltas e mais voltas) nesse ponto, se você
tiver uma animação inativa, é quando você definirá a animação para ir para inativa e, em seguida,
ela obviamente parará de se mover em qualquer lugar porque estamos apenas usando o sistema de animação para
empurrá-la para frente.
Então essa é a diferença entre empurrá-la para a frente com o código e usar o que está no sistema
de animação para impulsionar as coisas.
Se você estiver interessado em aprender mais sobre animação e esse tipo de movimento, então
eu tenho outro curso sobre como dominar animação na Udemy que você gostaria de dar uma olhada, o que mostrará essas
diferenças e realmente entrará em pânico. e parafusos do sistema de animação, mas
para este curso, não temos realmente tempo.