Про способы. Нарыл чудные алгоритмы:
Движение вдоль стены
http://www.red3d.com/cwr/steer/Wall.html
Алгоритм основан на предсказании точки будущего положения бота. Предсказанная точка проецируется на ближайшую точку стены и определяется нормаль к стене в этой точке. Смещаясь вдоль нормали на требуемую величину смещения, получаем точку цели и включаем алгоритм поиска цели.
Поиск цели
http://www.red3d.com/cwr/steer/SeekFlee.html
Алгоритм пытается двигать бота таким образом, чтобы он пролетел сквозь цель. Вектор сдвигающей силы есть разность между вектором скорости бота и вектором требуемой скорости (направленным прямо к цели).
Предсказание траектории
http://www.red3d.com/cwr/steer/Obstacle.html
Уклонение от препятствия основывается на предсказании траектории. Если в предсказанном участке пути находится препятствие, то включается боковая сила, величина которой зависит от конечной точки предсказанной траектории до препятствия. Также имеет место торможение. Боковая сила заставляет бота просто сменить траекторию до того момента, когда препятствие исчезнет из предсказываемого участка траектории.
Зондирование
http://www.red3d.com/cwr/steer/Containment.html
Бот размещает перед собой зондирующую точку. Если точка упирается в препятствие, то рассчитывается нормаль к поверхности препятствия в точке попадания зонда. По компонентам нормали определяется уклоняющая сила, вектор которой перпендикулярен направлению движения бота и лежит в плоскости вектора движения и нормали. Зондов может быть несколько, растопыренных вокруг бота подобно усикам. Либо же можно использовать один зонд, но проверяющий несколько точек за один цикл.
Преследование и уклонение
http://www.red3d.com/cwr/steer/PursueEvade.html
Алгоритм основан на предсказании точки столкновения, которая определяется по вектору скорости цели и дистанции до преследователя. Рассчитанная точка используется как цель для алгоритма поиска цели.