Нерест большого количества navmeshagents заставляет их прыгать позиции - PullRequest
0 голосов
/ 30 марта 2019

Крест размещен на GameDev .

Я делаю игру в стиле Tower Defense в 3D с использованием Unity. Я испытываю неприятную проблему с появлением большого количества персонажей в области navmesh, где, если я создаю слишком много в одном и том же месте, многие из них «телепортируются» сразу после создания экземпляра к месту назначения navmesh.

Вот рисунок одного из уровней:

enter image description here

Черное пятно - база игроков, до которой должны добраться неигровые персонажи. Зеленый пейзаж не имеет навигационной сетки и использует сетчатые коллайдеры. Декорации - это в основном крутые холмы, образующие долину, через которую должны пройти NPC. Он состоит из нескольких ячеек, помеченных как неприступные в навигации. Большое синее пятно - это первая локация спавна, которую я пробовал, позже я попытался увеличить область, указанную в правой части изображения (см. «Что я пробовал» ниже).

При создании экземпляра в исходной локации спавна, если я порождаю более 20 неигровых персонажей одновременно, многие из них прыгают в область, обозначенную красными точками. NPC имеют радиус около 1,5 м, как и их свойство избегания коллайдеров и навешивания.

Вещи, которые я пробовал:

  • Нерест в случайной позиции внутри круга с радиусом 50 м.
  • Добавление большой новой скрытой области navmesh, как на рисунке выше, определение массива векторных позиций, хорошо разбросанных и порождающих в каждой позиции по очереди, так что нет двух navmeshagents рядом с каждым Другой.
  • Добавление задержки к navmeshAgent.SetDestination(playerBase) после создания экземпляра в надежде предотвратить немедленный переход к рядом с пунктом назначения.
  • Уменьшение радиуса уклонения от навешивающих агентов. Это иногда немного уменьшает проблему, но все же, даже с радиусом 0,1 любой более чем 50 NPC вызывают проблему.
  • Отключение избегания вообще (установка в none в navmeshagent), опять же, может вызвать больше, но проблема все еще возникает
  • Отключение автопереходов и автоматического повтора в navmeshagent
  • Увеличивая время между экземплярами, большой промежуток в несколько секунд работает, но делает игру слишком легкой
  • Не указав пункт назначения - как ни странно, они все еще телепортируются к базе игроков, поэтому я думаю, что пункт назначения не имеет значения

Как я могу создать большое количество навешагов за короткий промежуток времени, избегая такого поведения "телепортации"?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...