Соединение регионов: сетка и допуск границ
Проверить шов без случайного открытия запрещённых проходов.
У соседних навигационных регионов есть два разных механизма соединения: объединение рёбер через сетку карты и дополнительные соединения близких рёбер по допуску. edge_connection_margin управляет вторым механизмом. Простое увеличение допуска не исправляет любую геометрию и может открыть нежелательный проход.
Проверять в правильном порядке
- Убедитесь, что регионы принадлежат одной карте и включены. Разные карты изолированы.
- Проверьте реальные навигационные границы после трансформа и запекания, а не только видимые модели.
- Проверьте пересечение слоёв региона и маски запроса.
- Проверьте, разрешены ли дополнительные соединения у карты (
MapSetUseEdgeConnections) и у регионов (RegionSetUseEdgeConnections). - Настройте
MapSetEdgeConnectionMarginв единицах своей карты и дождитесь публикации изменений. - Выполните новый запрос в обе стороны и сравните конечные точки с целями.
Если разрыв является лестницей, прыжком, дверью с условиями или телепортом, используйте NavigationLink и игровую логику перехода. Не соединяйте такой разрыв огромным допуском только ради получения массива точек.
Конкретная проверка допуска 2D
В выполненном примере один прямоугольник занимает x=0–10, второй — x=12,5–22,5 при одинаковом диапазоне y=0–10. Разрыв равен 2,5 единицы.
- При допуске 0,1 полного пути к цели во втором регионе нет.
- При допуске 3 параллельные границы соединяются;
RegionGetConnectionsCountпервого региона становится больше нуля. - Отключение дополнительных соединений на карте или втором регионе снова разрывает маршрут.
Это проверка одной конфигурации параллельных границ, а не гарантия соединения любых рёбер в пределах расстояния. Частичные наложения, пересечения и плохая топология требуют исправления навигационной геометрии.
Почему маленький зазор иногда соединяется без margin
Для объединения используются ключи вершин в сетке карты, вычисляемые из координат и размера ячейки. Поэтому описание «координаты обязаны совпасть как float» слишком грубое.
В отдельной проверке при ячейке 1 границы x=10 и x=10,5 объединились даже при отключённых дополнительных соединениях и margin=0,1. Это свойство конкретной сетки и геометрии: не используйте небольшой видимый зазор как надёжный запрет навигационного перехода. Для запрета нужны корректная топология, слои или отдельные карты.
Размер ячейки запекания и сетка объединения карты связаны с точностью, но это разные этапы. Не меняйте их вслепую ради одного шва: сравните итоговые границы и маршрут после изменения.
Что считать успешным результатом
Новый путь должен соединять нужные участки, а не только содержать точки. Проверьте оба конца и возможность физического движения. Дополнительная навигационная связь через зазор не добавляет туда пол или коллайдер.
Записывайте сохранённые параметры карты вместе с воспроизводимой геометрией. В этом наборе проверены gap/margin, переключатели соединений, число связей и пример с зазором меньше ячейки только в 2D. Соединения 3D, сложные перекрытия, физическая проходимость и стоимость перестроения не измерены.