В 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-компонент векторов и убедитесь, что они копланарны.