Como vimos, o movimento e a animação do agente navmesh não funcionam bem juntos por padrão. Não podemos editar ou substituir a classe do agente
navmesh para considerar a animação do nosso personagem, portanto,
precisamos criar outro método.
Felizmente, o Unity fornece uma configuração útil de animação e um script para iniciantes.
Nós vamos adicionar algumas ferramentas fornecidas pela Unity ao nosso personagem zumbi para fazer com que sua animação
e seu movimento de navmesh se comuniquem.
Agora você não precisa saber muito sobre o sistema de animação para fazer isso, pois o material fornecido pelo Unity
tem todas as configurações feitas para você.
Portanto, com esta palestra, você precisará baixar o StrafeSetPackage e arrastá-lo e soltá-lo
na pasta Asset.
Depois de importada, você receberá uma pasta 'Animações' em seus Ativos e isso terá
todas as ferramentas necessárias para animar Stevie, para que ela possa nos seguir adequadamente e as animações ficarão agradáveis
e suaves.
Se você quiser usar seu próprio personagem, precisará de um arquivo FBX e de um personagem equipado
para o sistema Humanoid.
Agora, se você não é um animador, pode obter um monte de personagens gratuitos do Mixamo. com.
Então você vai para Mixamo. com e você pode fazer login com sua conta da Adobe.
Você não precisa ter uma conta paga; portanto, este é um serviço gratuito e você pode selecionar caracteres.
Você também pode selecionar animações (mas não precisa de
animações para este exercício) e pode escolher o personagem que quiser e clicar em [DOWNLOAD] assim que aparecerem,
e você terá a opção de fazer o download para Unity, que está lá e você pega seu personagem e arrasta
e solta na pasta Assets.
Em seguida, você pode arrastá-lo e soltá-lo em sua cena e aplicar os mesmos processos
que estamos
fazendo aqui e transformá-los em um Nav Mesh Agent.
Quando você traz seu arquivo FBX pela primeira vez do Mixamo para o Unity, basta arrastá-lo e soltá-lo da
área de trabalho ou de qualquer lugar na pasta Assets e solicitará que você corrija o normal, então selecione [Corrigir agora].
Caso contrário, perderá todas as conexões com as texturas, o que é algo que você não deseja.
Você vai acabar com um 'componente de modelo' e depois um '. pasta fbm ', que contém todas as texturas e,
em seguida, uma' pasta de materiais '. Portanto, este aqui é o que possui todas as suas
animações e componentes e o que for anexado a ele. O que você quer fazer é pegar isso e arrastá-lo para a sua cena,
que agora fará do seu personagem parte do seu jogo.
Quando você faz isso, algo realmente estranho com os materiais estará acontecendo e todos os normais terão transformado as coisas
de dentro para fora e parecerão um pouco estranhos. Para corrigir isso, vá para a
pasta Materiais e selecione cada um dos materiais (shift-select), vá para 'Shader' no Inspetor, 'Legacy Shaders' e selecione um
dos shaders herdados. Eu costumo escolher 'Bumped Diffuse', que é o principal. Isso resolverá seu problema de
sombreamento no personagem.
Agora, há duas outras coisas que você precisa fazer para deixar seu personagem pronto no mesmo estado que
nosso personagem de zumbi que estamos usando, para que ele funcione com essa configuração.
Então selecione o próprio personagem na Hierarquia, você encontrará o 'Animator' lá e é aqui que você
arrasta o controlador Locomotion,
aqui mais tarde.
Mas o que é importante neste momento é que você marque este 'Aplicar movimento raiz' para
que seja a animação que move seu personagem enquanto ele se move.
A outra coisa que você precisa fazer é transformar seu personagem em um humanóide. Isso acontece em Ativos, onde seu personagem é
selecionado, e no Inspetor, você encontrará três guias: Modelo, Equipamento e Animações. Queremos a guia Rig e, em seguida,
vá para Animation Type e defina-o como 'Humanoid'
(por padrão, ele aparecerá como 'Generic')
e clique em [Apply]. Agora que o novo personagem está pronto para fazer exatamente o que fizemos com
o nosso modelo de zumbi, então a partir daqui você pode adicionar o Nav Mesh Agent e todos os outros componentes.
Portanto, essa é uma visão geral muito rápida de como você obtém um modelo do Mixamo aqui e,
se você não é um animador, o Mixamo é um recurso fantástico para ter acesso.
Então, nós temos nosso personagem. Aqui está Stevie configurado exatamente da mesma maneira que estava na palestra anterior.
Ela tem um Animator nela que controlava sua animação de caminhada que eu já dei a você e
depois o script ChasePlayer e o Nav Mesh Agent. O que faremos agora para mudar
o comportamento dela é modificar o zumbi aqui, no Animator.
O que você está procurando (nesta nova pasta de animações que você baixaria) é
o controlador 'Locomotion'.
Há 2 no meu.
Se você tem 2, pode haver um com '1' no final.
Apenas ignore isso.
Na verdade, eu posso excluí-lo para me livrar dele.
Queremos apenas este que seja o LocomotionController.
Agora, com isso, vamos selecionar Stevie novamente, você deseja arrastar e soltar isso no local
no Animator Controller.
A última coisa para fazer isso funcionar é ... se você der uma olhada na
pasta Assets, ao importar o StrafeSetPackage, também receberá uma pasta Scripts, na qual haverá alguns scripts.
O que você deseja é o LocomotionScript.
Então arraste e solte isso para Stevie e permitirá que o sistema de animação que você acabou de
adicionar fale com a navmesh, descubra onde o personagem deve estar e verifique se
a velocidade na qual ela está se movendo é coordenada com a velocidade da animação.
Agora, se você pressionar Play e sair para passear (eu andarei para trás para que você possa ver o que está acontecendo),
poderá ver que Stevie agora está de castigo. Ela não está deslizando.
Claro,
as animações dela mudaram porque tivemos que usar as personalizadas que a unidade nos deu para esse
pacote em particular.
Observe como o cilindro navmesh
(o verde) está em uma posição bastante diferente da posição atual, porque o que está acontecendo nesse script é que
ele está negociando a posição do modelo e do Nav Mesh Agent e apresentando uma
média intermediária de onde colocar os modelos.
Então, parecerá realista enquanto estiver se movendo e perseguindo você ao mesmo tempo.
Existem outros dois scripts que acompanham esse StrafeSetPackage.
Há um script 'ClickToMove' e um 'LookAt'. O script ClickToMove fará com que Stevie mude para
o local em que você clicou na navmesh, como já fizemos no passado.
Vamos apenas dar uma olhada nisso.
Então, o que precisamos fazer é desligar o controle de primeira pessoa e adicionar outra
câmera à cena. Então, clique com o botão direito do mouse na Hierarquia e selecione Câmera.
Certifique-se de que isso não é algo infantil e, em seguida, você provavelmente
deseja configurar sua câmera para ver a cena lá. Com a câmera selecionada,
GameObject> Alinhar com a vista.
Agora, quando pressionarmos Play, poderemos clicar por aqui e fazer com que Stevie se mova. Agora selecione Stevie e desativaremos o script
ChasePlayer porque ela não poderá mais encontrar-nos para perseguir e não
o usaremos.
Vamos usar esse 'ClickToMove', então arraste-o para o Inspetor e anexe-o ao seu agente.
O script ClickToMove usa a câmera principal para projetar o raio na área de navmesh e, para fazer isso
e localizá-lo, verifique se a câmera está configurada e marcada como MainCamera, porque desligamos o
controlador FPS para que
o Agora a câmera principal desapareceu. Precisamos criar um novo para garantir que ele possa
ser encontrado usando essa tag MainCamera.
OK, agora pressione Play e você poderá clicar no ambiente e Stevie se moverá.
Agora você pode ver que ela tem vários tipos diferentes de animações que ela pode usar.
Podemos subir as escadas? Ela pode se mover para o lado e também para a frente e para trás
e também no local, e ela tem uma animação inativa para quando parar.
Então é isso que você obterá nesse conjunto.
Agora, a última coisa que você tem também é esse script LookAt.
Ele permite que você mova a cabeça do seu personagem para olhar para onde ele está indo,
tornando-o ainda mais realista.
Então segure esse olhar e vamos colocá-lo aqui.
Arraste-o e solte-o sobre Stevie.
A coisa que você precisa configurar neste LookAt é a cabeça.
Precisa saber onde está a articulação do seu personagem.
Então, se pegarmos Stevie e cairmos na Hierarquia, você estará olhando embaixo de 'Quadris'.
Então este é o aparelhamento que está acontecendo dentro do personagem (os ossos do personagem). Olhe para baixo através da
coluna vertebral e depois pescoço e depois cabeça. Pegue o Head e arraste e solte-o no 'Head slot' no
script LookAt e isso agora controlará a cabeça do personagem usando o sistema de cinemática inversa
incorporado na animação.
Então pressione Play e é muito sutil, mas você pode
ver que ela vira a cabeça na direção em que está indo.
Tudo bem, agora que você tem 1 Stevie configurado, você pode duplicá-la se quiser e ter 2
ou mais.
Pressione Play e eles agirão como agentes de malha Nav ... bem, porque eles são agentes de malha Nav. Então eles manterão distância um
do outro, enquanto tentam se mover e também usarão o conjunto de animação que nos foi
dado pelo Unity.
Se você estiver interessado em adicionar suas próprias animações e tiver suas próprias, precisará de um
conjunto de 9 animações e elas serão chamadas de Conjunto Strafe.
Portanto, eles são movimentos para um estado específico do seu agente (digamos, executando), mas existem
9 fases diferentes de execução. Portanto, há para a frente, para trás, correndo no local e,
lado a lado, e também todas as direções diagonais.
Esse é o conjunto completo de strafe. Para descobrir onde isso está
configurado, se você for para a pasta Animações e clicar duas vezes em nosso LocomotionController para abrir
a janela do Animator.
Todo esse controle que está acontecendo está acontecendo dentro do estado 'Mover'.
Se você clicar duas vezes nele e abri-lo, verá que é uma árvore de mesclagem.
É bastante complexo e provavelmente não é uma boa ideia andar por aqui, a menos que você saiba sobre misturar árvores.
Mas se você tiver todas essas animações e quiser mudar as animações, sugiro
que você não altere nenhuma das 'configurações', mas as animações estão aqui.
Então, é como correr 0 graus, o que seria para a frente, então você corre 90 graus e
então diagonalmente para a frente, diagonalmente para trás ...
Então é isso que é chamado de Strafe Set e é daí que esse nome vem.
Se você tem suas próprias animações, pode arrastá-las e soltá-las aqui para configurá-las para o seu personagem.
Mas todos esses foram criados especialmente para trabalhar com este sistema, o que o torna muito realista.
Portanto, se você realmente quiser saber mais sobre isso, verá um link na tela para
onde esse conjunto pode ser baixado, na documentação do Unity.
Se você é um animador familiarizado com tudo isso, ele o ajudará a entender em outro nível.
Então, isso é configurar animações complexas de um personagem e usar a busca de caminhos e a navegação navmesh para fazer com que
essas coisas se comuniquem e pareçam coordenadas.