MaximSokol, считать колизии для всех блоков постоянно - не оптимальный путь . Как я понял , блоки у тебя одинаковые , то используй двумерный массив а лучше дата структуру GM - "сетку".
1)Создаём массив занятых блоками ячеек .
Координаты блока на экране будут :
ширина спрайта*х + смещение
высота спрайта*у +смещение
2)Если блок падает сверху то проверяем занята ли нижняя ячейка у-1
если занята то когда блок достигнет ячейки над ней он отстаеавливается
3)если разрушена ячейка x,y то проверяются ячеки над ней у+1, у+2 ... и т д и если там есть блоки то они двигаются согласно пункту 2)