Конечно, нет однозначного правильного ответа, но я могу поделиться тем, что я сделал, с похожей проблемой:
Я согласен, что на этом этапе прохождение выглядит старой школой.Однако, если ваши объекты меньше вашей навигационной сетки, вы можете избегать столкновений с помощью ограничивающих рамок, фактически не аннулируя путь.Сделайте предотвращение столкновений небольшим и локальным по отношению к большему пути.
Если это не работает для вашей игры, обычно лучше всего добавлять блоки.Если вас беспокоит стоимость поиска пути, вы можете подождать, пока не произойдет столкновение, временно добавить «блоки» и выполнить повторный путь.Другой подход заключается в том, чтобы просто периодически вставлять блоки и повторять путь.Это может дать естественные пути и избежать «столкновения друг с другом перед движением», что может выглядеть странно.
Стоимость во многом зависит от вашего алгоритма A *.Если алгоритм не кэширует результаты, тогда блоки не имеют дополнительных затрат, и вы можете запускать A * так часто, как это имеет смысл.Например: запустите A * один раз за кадр и сохраните очередь задач A *.
Если ваш алгоритм кеширует результаты, попробуйте сгруппировать вычисления A * так, чтобы вы делали несколько решений перед перемещением блоков.1009 *