ドット単位で移動の場合、移動方向に対して最低2箇所のチェックをしないとBGにめり込む状態が発生すると思います。なので方向に対してBGGETは2回行う事になります。 と言うのは例えば上方向の場合、キャラクターの左上の座標と右上の座標を調べないとBGと重なる状態が発生するからです。 正確にはキャラクターが大きくなると左上と右上だけでは真ん中でめり込む可能性が出てくるのでチェックする座標は増えると思います。 この当たり判定のポイントをどの程度最適化するかで処理の効率も変わってくるところがあるのですが、とりあえずって感じです。 初期のドラクエのように1回の移動で16ドット動くとかの場合は、BGの単位と一致しているので、調べるのか方向に対して1箇所で問題なくなったりもします。 ちょっとややっこしいですが頑張ってください!