Да. A * - это путь почти во всех случаях. Расчет стоимости вашего узла становится динамическим и, следовательно, более сложным для расчета и отслеживания.
Если вы уже знаете, где будут находиться движущиеся препятствия в будущем, ваш A * может учитывать временную зависимость препятствий в функции стоимости.
Например: этот узел будет достигнут за 4 тика, занятых с тика № 3 до тика № 6, поэтому стоимость поездки на этом узле составляет 6 - 4 = +2 тика. Это все еще может быть лучшим путем.
Направление движения препятствия также должно быть принято во внимание.
Если вы не знаете заранее, тогда вы не можете принять препятствия и пересчитать путь при достижении препятствий, но вам нужно будет что-то делать с блокировками и блокировками. (То же самое применимо, если вы можете предсказать, где будут препятствия, но это само по себе является типом предотвращения тупиковых ситуаций / живых блокировок и этого может быть достаточно для вашей цели.)
Тупик - это когда оба ждут, пока другой переместится и никто не сдвинется
Живая блокировка - это когда оба ( или более <- это важно учитывать) двигаются, чтобы избежать другого в том же направлении и в конечном итоге идти вперед и назад без прогресса.
Решение живых блокировок может стать очень сложным, и это полностью зависит от правил и механизмов столкновения вашей игры (например: должны ли они сражаться и разрушать препятствие?).
Это часто приводит к тому, что ваши движущиеся объекты планируют резервирование узлов / путей (не забывайте отмены, когда они меняют путь или умирают), чтобы другие движущиеся объекты могли планировать заранее.
Получив эту информацию, вы также можете планировать перехват.