Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Использование агента NavMesh с другими компонентами

Вы можете использовать NavMeshсетку, которую Unity создает для аппроксимации пешеходных зон и препятствий в вашей среде для поиска пути и искусственного интеллекта. управляемая навигация. Подробнее
См. в Словарь
Agent, NavMesh Obstacle и Off MeshОсновной графический примитив Unity. Меши составляют большую часть ваших 3D-миров. Unity поддерживает триангулированные или четырехугольные полигональные сетки. Поверхности Nurbs, Nurms, Subdiv должны быть преобразованы в полигоны. Подробнее
См. в Словарь
Связывание компонентов с другими компонентами Unity. Вот список того, что можно и чего нельзя делать при смешивании различных компонентов.

Агент NavMesh и физика

  • Вам не нужно добавлять физические коллайдерыневидимую форму, которая используется для обработки физических столкновений объекта. Коллайдер не обязательно должен быть точно такой же формы, как сетка объекта — грубое приближение часто бывает более эффективным и неразличимым в игровом процессе. Подробнее
    См. в Словарь
    агенты NavMesh, чтобы они избегали друг друга
    • То есть система навигации имитирует агентов и их реакцию на препятствия и статичный мир. Здесь статический мир — это запеченная NavMesh.
  • Если вы хотите, чтобы агент NavMesh перемещал физические объекты или использовал физические триггеры:
    • Добавить компонент коллайдера (если его нет)
    • Добавить RigidbodyКомпонент, позволяющий воздействовать на GameObject смоделированной гравитацией и другими силами. Подробнее
      См. в компоненте Словарь
      • Включите кинематику (Is Kinematic) — это важно!
      • Кинематический означает, что твердое тело управляется чем-то другим, кроме физической симуляции.
  • Если и агент NavMesh, и Rigidbody (не кинематический) активны одновременно, у вас есть состояние гонки.
    • Оба компонента могут попытаться переместить агент одновременно, что приведет к неопределенному поведению.
  • Вы можете использовать агент NavMesh для перемещения, например. игровой персонаж, без физики
    • Установите приоритет уклонения агента игрока на небольшое число (высокий приоритет), чтобы позволить игроку проходить сквозь толпу.
    • Переместите агента игрока с помощью NavMeshAgent.velocity, чтобы другие агенты могли предсказать движение игрока, чтобы избежать его.

Агент и аниматор NavMesh

  • Агент NavMesh и аниматор с Основным движениемДвижением корневого узла персонажа, независимо от того, контролируется ли оно самой анимацией или извне. Подробнее
    См. в Словарь
    может вызвать состояние гонки
    • Оба компонента пытаются перемещать преобразование в каждом кадре.
    • Два возможных решения
  • Информация всегда должна течь в одном направлении
    • Любой из агентов перемещает персонажа, после чего следует анимация
    • Или анимация перемещает персонажа на основе смоделированного результата.
    • В противном случае у вас возникнет сложный цикл обратной связи.
  • Анимация следует за агентом
    • Используйте NavMeshAgent.velocity в качестве входных данных для аниматора, чтобы примерно сопоставить движение агента с анимацией
    • Надежность и простота реализации приводят к скольжению стопы там, где анимация не может соответствовать скорости.
  • Агент следует за анимацией

Агент NavMesh и препятствие NavMesh

  • Не смешивайте!
    • При включении обоих агент будет пытаться избегать самого себя.
    • Если дополнительно включено вырезание, агент пытается постоянно переназначать край вырезанного отверстия, что приводит к еще более ошибочному поведению.
  • Убедитесь, что только один из них активен в любой момент времени.
    • В состоянии смерти вы можете отключить агента и включить препятствие, чтобы заставить других агентов избегать его.
    • Кроме того, вы можете использовать приоритеты, чтобы избежать определенных агентов.

Препятствия NavMesh и физика

  • Если вы хотите, чтобы управляемый физикой объект влиял на поведение агента NavMesh.
    • Добавить компонент NavMesh Obstacle к объекту, о котором должен знать агент, это позволит системе уклонения определить препятствие
  • Если к игровому объекту прикреплены Rigidbody и NavMesh Obstacle, скорость препятствия автоматически определяется Rigidbody.
    • Это позволяет агентам NavMesh прогнозировать движущиеся препятствия и избегать их.
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
Руководство Unity 2021.3