В Unity, как предотвратить смешивание анимации с движением?

Эта проблема:

У меня есть модель персонажа с Nav Mesh Agent составная часть. Он движется очень хорошо в любое место, куда я говорю NavMeshAgent.destination имущество).

Но это внезапно перестает работать, как только я использую контроллер анимации, который я скачал из магазина. Персонаж не побежит к месту назначения; вместо этого он будет бесконечно бегать по кругу.

Я не уверен, почему это происходит, но я предполагаю, что бегущая анимация каким-то образом ограничивает способность персонажа поворачиваться. Инспектор в настройках импорта соответствующего файла.fbx показывает: Average Angular Y Speed: 0.0 deg/s,

Что я действительно, действительно не могу понять, так это то, почему это происходит, хотя я явно NavMeshAgent.updatePosition а также NavMeshAgent.updateRotation свойства к true, Как я понимаю документацию, это должно заставить персонажа двигаться как Nav Mesh Agent хочет, чтобы он двигался, а не как что-либо еще (включая анимацию) хочет, чтобы он двигался?

Как мне решить эту проблему? Как заставить анимацию не вмешиваться в движение?

2 ответа

Решение

Сделайте всю свою анимацию на месте и используйте код, чтобы сделать движение, и вы можете снять отметку с корневого движения и использовать значения конечного автомата, чтобы получить лучшее движение или использовать корневое движение и позволить механизму ретаргетинга mecanim выполнить смешивание, так что посмотрите сами, что получится Вы получите лучший результат, поэтому я думаю, что ваша проблема в том, что ваша анимация не на месте.

Первое: один из самых больших плюсов Unity - это его механизм. Отключение корневого движения сводит на нет большое преимущество.

Второе: причина, по которой ваш персонаж бегает, вероятно, в том, что аниматор и агент navmesh издают противоречивые приказы. Используйте updatePosition для false и updateRotation для true. Следовательно, аниматор контролирует скорость вашего движения, а агент navmesh контролирует угловую скорость. Другая возможная причина в том, что ваш пункт назначения недоступен. Проверьте Y-компонент векторов и убедитесь, что они копланарны.

Другие вопросы по тегам