Keep the formation offset
A common mistake is to send every unit directly toward the new destination. The group may eventually arrive, but the original formation shape is lost because each unit is following the same target instead of its own offset.
Use one destination per unit
Calculate a group destination first, then add each unit's formation offset to that destination. The important part is that the offset is preserved while the group moves.
Vector3 groupTarget = new Vector3(10f, 0f, 20f);
foreach (UnitAgent unit in units)
{
Vector3 target = groupTarget + unit.FormationOffset;
unit.MoveTo(target);
}
Why this works
The formation is defined by the relative offsets between units. Moving the anchor changes the group's location, while keeping the offsets unchanged preserves the shape.
Move the formation anchor, not every unit to the same point. Each unit should receive the new anchor position plus its own formation offset.