Тригонометрия.
Сперва вычисляешь ширину и высоту прямоугольника для построения, корень числа юнитов:
var units = 5;
var w = Math.ceil(Math.sqrt(units));
var h = Maht.floor(Math.sqrt(units));
Далее у тебя есть текущее среднее положение юнитов, и цель куда нужно идти, по сути они есть - центры. Берешь вектор между ними - вот тебе и поворот твоего построения.
Далее немного 2д математики с векторами и будет готово.
Лучше всего такие вещи набрасывать на бумаге, или если оперируешь JS'ом, очень удобно на jsfiddle используя canvas2d делать такие тесты и эксперименты.
Перед построением можешь сортировать список юнитов по их "приоритету", чтобы сперва были ближний бой, а потом дальний.
Если такой подход реализуешь, там уже и придумаешь с разными другими формациями и вариациями.