Nav3DObstacle
Nav3D позволяет использовать в качестве препятствий игровые объекты на сцене с компонентом MeshFilter с назначенным Mesh, либо с компонентом Terrain.
*Для препятствий, использующих MeshFilter, убедитесь, что для mesh настройках импорта включена опция “Read/Write Enabled”.
Добавьте компонент Nav3DObstacle к игровому объекту, который вы хотите сделать препятствием на сцене.
Вы увидите его инспектор:
В нем есть следующие настройки:
- Выбор режима обработки препятствия (обработка препятствия должна выполняться после инициализации Nav3D, чтобы оно учитывалось при поиске пути и, агенты могли его обойти во время движения):
- Runtime - препятствие будет обработано прямо во время игрового режима после инициализации Nav3D. Это может быть полезно, если препятствие генерируется во время игрового режима.
- Load from binary - препятствие будет загружено из заранее заготовленного бинарного файла. В большинстве случаев обстановка игровой сцены известна заранее, еще до загрузки сцены и инициализации Nav3D. В таких случаях всегда имеет смысл запекать препятствия сцены в режиме редактора, а на старте сцены загружать их из бинарного файла. Загрузка из бинарного файла всегда гораздо быстрее, чем обработка препятствия непосредственно в игровом режиме (runtime).
- Process children если включено, то для всех детей transform дерева будет совершен сбор информации о компонентах MeshFilter и Terrain. И все дети, имеющие данные компоненты, будут учтены при обработке препятствия.
* Если вы хотите, чтобы какой-либо дочерний элемент препятствия, содержащий MeshFilter либо Terrain, не учитывался при построении навигационного графа, то навесьте на него компонент Nav3DObstacleIgnoreTag
.
- Auto-update on change - если включено, то в случае изменения положения, поворота или масштаба transform компонента препятствия, будет выполняться его повторная обработка чтобы актуализировать граф поиска. (Препятствие будет сначала удалено из хранилища препятствий, затем будет повторно обработано и добавлено в него).Данная функция доступна для использования только для препятствий с выбранным Runtime режимом обработки.
*Поскольку добавление препятствия всегда длительная процедура, то слишком частое обновление препятствия может плохо сказаться на производительности. Рекомендуем использовать эту функцию для небольших, находящихся отдельно препятствий
- Update min period(s) - как часто должно обновляться препятствие (в секундах) при включенном параметре “Update automatically on transform change”.
Для runtime-препятствий возможно их удаление/повторное добавление в хранилище прямо во время игры. Добавление происходит при срабатывании OnEnable(), удаление происходит при срабатывании OnDisable(). Соответственно, любое runtime-препятствие, созданное на сцене во время игры будет обработано и добавлено в хранилище. Если вы удалите или отключите игровой объект препятствия, то оно удалится из хранилища. Повторное включение препятствия вновь добавить его в хранилище.