>>123
アプローチの仕方がいくつかあるので、
もうちょっと(失敗している状況などを)具体的に書いてくれると答えも得られやすいと思いますが・・・

ヒントというか方針を少し。
下にブロックがあるかどうか判定し、無ければ落下、
あれば垂直方向の移動をなしにすればいいので、
使えそうな条件はControlにある
[If there is an object at the position] (あるポジションに指定オブジェクトがあるかどうか返す)
か、
[If a position is collision free]
 (自オブジェクトがそのポジションに置いたとき、(solidだけか、全部かを)指定したオブジェクトに干渉しないかどうか返す)
を使うと対処できるかと思います。
もしブロックがあるときは、hspeedを0にするなど、落下処理を無効にしてください。