I am trying really hard to avoid that and doing collision by hand comparing Vector distances, but i think this wont take me far, i literally sort all boxes by distance and take the fist one,
var boxesCandidates = boxes.Where(r =>
{
if (r.id == _hoverBox.id) return false;
var relativeY = r.startPosition.y - _hoverBox.startPosition.y;
return verticalAxis > 0 ? relativeY > 0 : relativeY < 0;
});
boxesCandidates = SortByDistances(boxesCandidates, false);
var candidate = boxesCandidates.First();
SetHoverBox(candidate);
PD: Sorry for not been really helpful