Fiz alguns clipes de animação extras e a mera existência deles faz com que o player não consiga se mover. Não sei por que, quando excluo os novos clipes de animação, consigo mover o player novamente. Tentei desfazer o código para ver se era o código, mas não era.
Assim que uma animação que existe no AnimatorController contém qualquer quadro-chave em uma propriedade - mesmo que esse clipe/estado não esteja sendo reproduzido no momento - essa propriedade é basicamente bloqueada/pertencente ao Animator, então você não pode substituí-la pelo script.
Uma maneira seria definir as coisas em
LateUpdate
ou usandoWaitForEndOfFrame
, pois isso é executado após o loop de atualização da animação . Ambos são bem sujos, pois basicamente "lutam" contra oAnimator
e sobrescrevem os valores depois queAnimator
já os definiu => Você não pode confiar em, por exemplo, movimento incremental, pois, nesse meio tempo, o Animador pode já ter redefinido a propriedade.A alternativa é usar uma base
AnimatorController
que NÃO tenha seu novoAnimationClips
que anime a posição, mas apenas os estados correspondentes.E então, somente quando esses clipes forem necessários e o objeto for supostamente movido pela animação, use um
AnimatorOverwriteController
que tenha as animações correspondentes.Caso contrário, como mencionado, você também pode aninhar o player sob outro objeto raiz, mover a raiz por script e animar o player somente em relação a esse objeto raiz.
Provavelmente é porque sua animação está mudando os valores de posição daquele objeto do jogo que você deseja mover.
Se você quiser mover um objeto em animações, crie um Objeto de Jogo pai e anime-o.
O mesmo vale para rotações e escalas.
para que serve essa animação? se ela estiver atualizando a posição local e outro script tiver que mover a mesma transformação, ela não se moverá. você disse que ela não está reproduzindo a animação, o que, para ser sincero, eu não saberia dizer com certeza, mas se você tem uma animação movendo a transformação mais alta (na hierarquia) do seu personagem, provavelmente ela é ruim no geral e provavelmente está causando o problema.