ちなみにめり込む原因はチェックしている位置が問題ですね〜。 IFは上から順に実行されますが、斜めの場合、左右の判定のチェック位置に対して次の上下の判定が上書きされてしまい、実質Y方向の当たり判定しかしないで左右にも動いてしまっています。 なので、その辺も考慮して当たり判定を調整しないと斜め押しに対応した当たり判定にはならない感じですね〜。