Допустим у нас есть поле размерами X*Y на котором расположены препятствия. Есть положение юнита (объект который должен дойти до цели) и есть конечная точка к которой нужно прийти. Если на пути юнита встречается непроходимая точка - ее нужно обойти. Данный алгоритм решает эту проблему.
Общая суть метода заключается в построении вокруг препятствий особых полей которые отталкивают проходящих по соответствующим точкам юнитов.
Алгоритм предельно прост:
- строим карту с векторами сил вокруг точек
- каждый ход проверяем действует ли на эту точку вектор силы
- если есть прибавляем к текущему единичному вектору движения
- делаем эти действия для каждого юнита
Алгоритм в действии:
Реализация данного алгоритма на as3 (под flash develop) доступна на GitHub
Оригинал:
https://flash-dance-with-magic-drum.blo ... -post.html