Obstacle combinations - Nav3D Doc

Docy Child

Сочетания препятствий

Будем называть препятствия с выбранным режимом обработки “Runtime” как runtime-препятствия, а с режимом “Load from binary” - static-препятствия.

Если вы создаете runtime-препятствие во время игрового режима, то оно будет обработано и добавлено в хранилище (при срабатывании OnEnable()). Если вы отключите на сцене уже добавленное runtime-препятствие, то оно будет удалено из хранилища (при срабатывании OnDisable()).

Static-препятствия подразумеваются статичными в том смысле, что они не могут быть добавлены или удалены в игровом режиме. Они будут присутствовать на сцене с того момента, как были загружены из файла и до тех пор, пока Nav3D не будет деинициализирован.

Поскольку вышеописанные операции добавления и удаления для конкретного препятствия могут затрагивать объемы других препятствий на сцене, то получается конфликт между static и runtime препятствиями в случае, если их объемы пересекаются в пространстве.

Так что мы решили ввести несколько ограничений:

  • В момент инициализации сначала происходит загрузка и добавление всех статичных препятствий, затем обработка и добавление runtime-препятствий (если таковые имеются на сцене).
  • При обработке и добавлении runtime-препятствия его объем не должен пересекать объемы static препятствий, в противном случае будет выброшено исключение IntersectStaticObstacleException.
  • Как уже было сказано выше, добавление нескольких runtime-препятствий может привести к тому, что для них будет образован объединенный объем, больший чем каждый из их объемов в отдельности. Ваша задача позаботиться о том, чтобы возможный объединенный объем не пересекал объемы static-препятствий. Для проверки такого потенциального столкновения есть метод Nav3DManager.BoundsCrossStaticObstacles(Bounds _Bounds).

Для избегания таких ситуаций предлагаем вам вообще отказаться от совместного использования static и runtime препятствий на одной сцене.

Если вы все-таки решили использовать оба вида, то рекомендуем создавать runtime-препятствия вдалеке от static препятствий, чтобы минимизировать вероятность пересечения объемов.

Agent log

In the second section, you can get the contents of the agent log by clicking on ...

Debug drawing

In the first section, you can visualize the agent and his nearest environment. T...

Создание и настройка описания агента из кода

All Nav3DAgentDescription parameters configured in the description inspector c...

Nav3DManager

Nav3DManager is a helper static class. Can be useful for checking whether Nav3D ...

Nav3DInitializer

To use Nav3D in playmode, you need to initialize it. The Nav3DInitializer compon...

Nav3DObstacleLoader

To use the possibility of pre-baking obstacles on the scene in editor mode and t...

Nav3DObstacle

To manage obstacles on the scene, the Nav3DObstacle component is designed. Attac...

Сочетания препятствий

We will call obstacles with the selected processing mode “Runtime” as runtim...

Операции с препятствиями

Regardless of the obstacle processing mode, the processing procedure consists of...

Немного глубже о препятствиях

As already described above, in order for an obstacle to be taken into account du...

Nav3DAgent : Debug

The Nav3DAgent and its inheritors have an inspector that provides several useful...

Nav3DAgent

As mentioned above, you can use the Nav3DAgent script as a component for your ga...

Chat Icon Close Icon
ru_RURussian