僕も最初は傾きから計算していたのですが、結局
補正する方向が問題になってしまうのですよね。

現状のやり方は、非常にベタなつくりになっていて
補正場所については、配列にとったブロックの形状から
移動前の位置をトレースして脱出場所を探すことにしています。

X、Yについて補正順序を、試行錯誤しないと期待した動きにならないので
宇宙面と、重力下での判定(補正順序)はわけて別に作っています。