とりあえず、すぐにおかしいと思うのは、BXとBYですが、移動前のXY座標で求めても移動後のXY座標での当たり判定にはならないですよ。なのでボタン処理後に計算した方がいいです。