NavMesh-агенты дёргаются и трясутся когда стоят рядом друг с другом

Теги: #Unity
Рейтинг: 45.3% · 9 голосов
Создание игр на Unity, Unreal Engine, Godot: 3D-графика, шейдеры, физика, геймдизайн, оптимизация и инди-проекты.
Ответить
Аватара пользователя
timur1338
Сообщения: 9
Зарегистрирован: Пн май 11, 2026 6:39 pm

NavMesh-агенты дёргаются и трясутся когда стоят рядом друг с другом

Сообщение timur1338 »

Толпа врагов в Unity на NavMeshAgent. Когда они доходят до игрока и скучиваются — начинают мелко трястись и толкаться, выглядит как припадок. Как успокоить толпу?
👍6 ❤️ 🔥 😄 🤔1
✔ Лучший ответ сформирован автоматически — roman7016
Это классическая проблема NavMeshAgent когда несколько агентов пытаются занять одну точку назначения. По умолчанию они все стремятся к одной и той же позиции и начинают толкаться через avoidance. Решение: когда агент достигает остановочного расстояния до цели, отключаешь NavMeshAgent.updatePosition = false и NavMeshAgent.isStopped = true, а позицию фиксируешь вручную. Для толпы лучше разброс — на…
Перейти к ответу →
Аватара пользователя
oleg5897
Сообщения: 24
Зарегистрирован: Пн май 11, 2026 1:28 am

Re: NavMesh-агенты дёргаются и трясутся когда стоят рядом друг с другом

Сообщение oleg5897 »

Это они дерутся за одну и ту же целевую точку и постоянно пересчитывают избегание друг друга. Дай каждому чуть разный stoppingDistance и точку вокруг цели по кругу, а не одну общую. Толкотня сразу спадёт.
👍2 ❤️ 🔥2 😄 🤔
Аватара пользователя
rodion_root
Сообщения: 29
Зарегистрирован: Вс май 10, 2026 11:08 pm

Re: NavMesh-агенты дёргаются и трясутся когда стоят рядом друг с другом

Сообщение rodion_root »

Ещё подними Obstacle Avoidance quality пониже для дальних и отключай агентам пересчёт пути когда они в радиусе остановки. Они трясутся потому что каждый кадр находят что 'тут занято, надо подвинуться'.
👍 ❤️1 🔥 😄1 🤔1
Аватара пользователя
semyon_null56
Сообщения: 32
Зарегистрирован: Пн май 11, 2026 12:44 am

Re: NavMesh-агенты дёргаются и трясутся когда стоят рядом друг с другом

Сообщение semyon_null56 »

Раздал точки по кругу вокруг игрока + отключаю avoidance при достижении стоп-дистанции. Тряска ушла, теперь нормально обступают. Спасибо!
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
arseny_nova
Сообщения: 2
Зарегистрирован: Ср май 20, 2026 11:59 am

Re: NavMesh-агенты дёргаются и трясутся когда стоят рядом друг с другом

Сообщение arseny_nova »

Если толпа будет расти до сотен — посмотри в сторону flocking/boids поверх навмеша или вообще кастомного движения. NavMeshAgent на больших толпах сам по себе становится боттлнеком, а не только трясётся.
👍5 ❤️ 🔥4 😄 🤔3
Аватара пользователя
roman7016
Сообщения: 36
Зарегистрирован: Вт май 12, 2026 12:05 am

Re: NavMesh-агенты дёргаются и трясутся когда стоят рядом друг с другом

Сообщение roman7016 »

✔ Лучший ответ — сформирован автоматически
Это классическая проблема NavMeshAgent когда несколько агентов пытаются занять одну точку назначения. По умолчанию они все стремятся к одной и той же позиции и начинают толкаться через avoidance. Решение: когда агент достигает остановочного расстояния до цели, отключаешь NavMeshAgent.updatePosition = false и NavMeshAgent.isStopped = true, а позицию фиксируешь вручную. Для толпы лучше разброс — назначай каждому агенту точку на окружности вокруг игрока через NavMesh.SamplePosition с рандомным offset, тогда они равномерно расходятся по кругу.
👍 ❤️ 🔥2 😄 🤔
Аватара пользователя
dnscache8196
Сообщения: 32
Зарегистрирован: Вс май 10, 2026 10:26 pm

Re: NavMesh-агенты дёргаются и трясутся когда стоят рядом друг с другом

Сообщение dnscache8196 »

Если нужна именно реалистичная толпа, посмотри на RVO2 (Reciprocal Velocity Obstacles) — он встроен в Unity через NavMeshAgent.obstacleAvoidanceType = ObstacleAvoidanceType.HighQualityObstacleAvoidance, но на 50+ агентах это дорого. Альтернатива — поставить агентам разный priority (NavMeshAgent.avoidancePriority от 0 до 99), тогда более низкоприоритетные уступают дорогу и не толкаются. Обычно достаточно двух-трёх уровней приоритета: лидеры толпы и рядовые.
👍 ❤️1 🔥 😄 🤔
Аватара пользователя
nikita_stack
Сообщения: 4
Зарегистрирован: Вт май 26, 2026 3:08 pm

Re: NavMesh-агенты дёргаются и трясутся когда стоят рядом друг с другом

Сообщение nikita_stack »

Ещё один источник тряски: NavMeshAgent пытается двигаться но скорость уже почти нулевая из-за скученности, и физика колбасит transform каждый кадр. Добавь условие: если agent.remainingDistance < stoppingDistance && agent.velocity.sqrMagnitude < 0.01f, принудительно останови обновление позиции на несколько кадров. Также проверь что NavMeshAgent.radius выставлен реалистично — если он меньше реального коллайдера персонажа, агенты будут перекрываться и трястись на уровне физики.
👍 ❤️1 🔥2 😄 🤔1
Ответить
Поделиться темой: ✈ Telegram VK

Вернуться в «Геймдев и разработка игр»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость