かなり動くようになりましたね。 ソース見ましたが、まだ移動・判定のあと移動処理がはいってるようですね。判定処理で補正したあとはSPOFSで反映するだけになっていないとあとでまずいかも。 主人公がめり込んだり・少し浮いたりしてるのを直すには「壁にに重なっている」という判定をされた後、「じゃあどこまでは行けるのか」というのを1ドットずつずらしながら判定していってぴったり大丈夫な場所を見つける処理を書くといいとおもいます。