Estou trabalhando com animações no Unity e até agora fiz apenas quatro (Up Down Left e Right) e minha janela de animação parece seguir ...
O problema é que, se eu estava subindo, quero que o herói fique olhando para cima não vá para "ponto morto neutro" (ou como ele começou), mas isso significa que tenho quatro posições ociosas ... e cada uma delas pode fazer a transição para cima, baixo , Esquerda ou Direita e eles vão exponencialmente a cada ação adicional ...
O que me faz sentir que estou fazendo algo errado ...
Existe uma maneira melhor de fazer transições entre ações diferentes?
Respostas:
Você pode resolver esse tipo de problema com o BlendTrees (em geral, é uma boa idéia confiar frequentemente em árvores de mistura). A árvore de mesclagem é um tipo de estado de multi-animação que, com base em um parâmetro (flutuante), decide qual das animações que ela contém está ativa no momento (ou a animação resultante pode ser uma mistura de várias animações). Mesmo quando as animações não são combinadas, mas trocadas, a troca ocorre no meio da animação (ou seja, se a animação "existente" estiver em 35%, a nova será reproduzida de 35% em diante). Do lado de fora, tudo isso está oculto como se fosse um estado simples / único.
Por exemplo, você tem uma árvore de mesclagem com 8 animações de sprite (inativa com 4 direções principais e 4 na diagonal). Existem 2 parâmetros nessa árvore de mistura - "horizontal" e "vertical". E com base nesses 2 parâmetros, a árvore de mistura decidirá qual animação reproduzir. Com base no parâmetro "horizontal", a árvore de mesclagem escolherá entre animação esquerda / direita e o parâmetro "vertical" decidirá a animação de cima para baixo. Então, quando combinadas, você terá todas as 8 animações com diagonais (é a mesma idéia que está por trás dos joypads / joysticks).
É um pouco confuso, portanto, mesmo que o StackExchange não goste de links, vincularemos um pequeno exemplo de vídeo que fiz. Observe a parte superior direita da tela. Os pontos cinzas são os "estados" / animações e o ativo é aquele que fecha o ponto vermelho. Como dito no começo, pode ser ainda mais complexo e cada animação tem uma influência / força com base em sua distância do ponto vermelho, resultando em uma mistura entre várias animações.
Do lado de fora, é apenas um estado (árvore de mistura) e quando você aplica o mesmo conceito para andar e atacar, você terá apenas 3 estados vinculados.
As árvores de mesclagem são criadas com o botão direito do mouse em uma área vazia do Animator Criar estado -> a partir da nova árvore de mesclagem. De lá, está tudo no inspetor. Com a árvore de mistura selecionada, você pode escolher o tipo da árvore de mistura (1D, 2D, etc.), adicionar animações, posicioná-las (em relação aos valores dos parâmetros) e selecionar os parâmetros de controle.
Se você quiser obter mais informações sobre o Blend Trees, a seguir, vídeos do Unity - Unite 2016 e Unity Tutorials .
fonte
O problema aqui é que você está tentando unir tudo, em vez de usar um gatilho para alternar entre inativos. Você deve escolher a animação inativa usando um tipo de condicional if-else ou switch-case. Eu fiz um diagrama que parece muito mais organizado (suponha que um deles seja o caso padrão):
Informação adicional:
Dê uma olhada em Parâmetros de animação sobre como definir parâmetros para o animador reconhecer, Máquinas de estado para combinar animações, Comportamentos de máquina de estado para saber como verificar as variáveis que você definiu.
fonte