Я тоже решаю эту задачу, пока я не приступил к выполнению, но уже есть 2 идеи.
Первая для двигающихся персонажей. По скольку у меня нет Navigation Agent, а пути я вычисляю вручную, получая путь из Navigation Server, я закреплю Raycast к каждому НПС. Когда Raycast обнаружит на пути другого НПС, то перестроит маршрут исключив следующие точки с учетом радиуса НПС, то есть сместить путь на радиус НПС.
Смотри этот пример https://www.reddit.com/r/godot/comments/igcnn7/dynamic_obstacle_avoidance/
Второй способ управление геометрией Navigation Regions. Нужен для создания непроходимых или дорогих поверхностей в игре (к примеру Лужи).
Для этого нужно определить точки принадлежащие NavRegion, затем с помощью геометрических вычислений вырезать из текущей области новую и создать для него новый Region с иной стоимостью. Когда Region уже не нужен вернуть все обратно. https://docs.godotengine.org/en/stable/classes/class_geometry2d.html
Я пока не приступал к воплощению, поэтому детальней ничего написать не могу.