Я помню, что сталкивался с этой проблемой в колледже, но мы не использовали поиск A *. Я не могу вспомнить точные детали математики, но я могу дать вам основную идею. Может быть, кто-то еще может быть более подробным.
Мы собираемся создать потенциальное поле из вашей игровой зоны, за которым может следовать объект.
Возьмите свое игровое поле и наклоните или деформируйте его так, чтобы начальная точка была на самой высокой точке, а цель - на самой низкой точке.
Ткните потенциальную яму в цель, чтобы подтвердить, что это пункт назначения.
- Для каждого препятствия создайте потенциальный холм. Для неточечных препятствий, которые являются вашими, потенциальное поле может асимптотически увеличиваться на краях препятствия.
Теперь представьте ваш объект как мрамор. Если вы разместили его в начальной точке, он должен скатиться по игровому полю, обойти препятствия и упасть в цель.
Трудная часть, математика, которую я не помню, - это уравнения, которые представляют каждый из этих выступов и скважин. Если вы поймете это, сложите их вместе, чтобы получить окончательное поле, а затем сделайте некоторое векторное исчисление, чтобы найти градиент (как сказал towi), и это направление, в котором вы хотите двигаться на любом этапе. Надеюсь, этот метод достаточно быстр, чтобы вы могли пересчитать его на каждом шаге, так как ваши препятствия движутся.