BuildingOffMeshLinksAutomatically
Автоматическое Создание Off-Mesh Link
Некоторые используемые варианты для Off-Mesh Link могут быть обнаружены автоматически. Два самых используемых варианта: Drop-Down (упасть) and Jump-Across (перепрыгнуть).
- Drop-Down связь создаётся для спрыгивания с платформы.
- Jump-Across связь создаётся для перепрыгивания канав.
Чтобы автоматически найти прыжковые локации, процесс сборки проходит вдоль границ NavMesh и отмечает, если место приземления прыжка находится в пределах NavMesh. Если траектории прыжка ничего не мешает то создаётся Off-Mesh Link.
Давайте установим автоматическую генерацию Off-Mesh Link. Если вы не знакомы с запеканием NavMesh, посмотрите статью Сборка NavMesh.
Во-первых нужно пометить объекты в сцене, где может начаться прыжок. Это делается включением опции Generate Off-Mesh Links во вкладке Object окна Navigation.
Во-вторых надо установить траектории drop-down и jump-across:
- Drop-Down - генерация связи контролируется параметром Drop Height. Этот параметр контролирует, насколько высоко может находится место, соединяемое связью, установка значения на 0 отключает генерацию.
- Траектория drop-down связи определяется так, чтобы горизонтальное перемещение (А) было равно: 2*agentRadius+4*voxelSize. Это означает, что точка падения будет находиться только по ту сторону края платформы. Вдобавок вертикальное перемещения (B) должно быть больше чем настройка запекания Step Height (или просто шаг падения) и меньше чем Drop Height. Регулировка размера вокселя делается так, чтобы любые ошибки округления не мешали генерации связей. Вы должны установить значение Drop Height немного больше, чем вы определяет в вашем уровне, чтобы связи соединялись правильно.
- Генерация Jump-Across связи контролируется параметром Jump Distance. Этот параметр контролирует то, какое наибольшее расстояние может быть соединено. Установка значения на 0 отключает генерацию.
- Траектория Jump-Across связи определяется так, чтобы горизонтальное перемещение (С) было больше чем 2*agent radius и меньше чем Jump Distance. Кроме того, место приземления (D) не должно быть больше, чем размер вокселя на уровне стартовой позиции.
Теперь, когда объекты промаркированы а установки настроены, пришло время нажать кнопку Bake - в итоге вы должны получить автоматически сгенерированные Off-Mesh Link! Если когда-нибудь в измените сцену и сделаете запекание, старые связи будут уничтожены и на основе новой сцены будут созданы новые связи.
Устранение Проблем
Если связи не генерируются там, где по вашему они должны быть, то имейте ввиду:
- Drop Height должен быть немного больше, чем фактическое расстояние, установленное на вашем уровне. Это гарантирует, что небольшие отклонения, которые могут возникнуть во время процесса запекания NavMesh, не будут препятствовать соединению связей.
- Jump Distance должен быть немного больше фактического расстояния на вашем уровне. Параметр Jump Distance исмеряется от одного места к другому месту на NavMesh, это значит что вы должны добавить 2*agentRadius (плюс ещё немного) чтобы удостовериться, что связи будут соединены.