Shubi When you check if Sprite is overlapping Sprite, it can pick many instances, not necessarily the one you are dragging. And when you have 4 such conditions combined with OR, I have no idea how they will pick instances and what will be the final result. When you pick the dragging instance first, and then check if it's overlapping other (family) instances, you have a much better control. And when I tried this code, it worked for me, I could attach blocks from any side.
If you have multiple sprites in a family, the approach will be the same - create a clone family with the same sprites. Pick the instance of the family which is being dragged, then check if it's overlapping CloneFamily.