頭で考えて「コレでいける」と思ったプログラムが実際やってると動かないのはよくあること
何が言いたいのかと言うとアレだけ何回も座標修正処理ができたと言っていたのに
結局思ったとおりに動かなかったってことです(´・ω・`)
これなんですけど
► スポイラーを表示
if(player.hantei_x1<abe.hantei_x1){ //自キャラは敵キャラの左寄りか
player.x-=abe.hantei_x1-player.hantei_x2;
}else{
player.x+=abe.hantei_x2-player.hantei_x1;
}
if(player.hantei_y1<abe.hantei_y1){ //自キャラは敵キャラの上寄りか
player.y-=abe.hantei_y1-player.hantei_y2;
}else{
player.y+=abe.hantei_y2-player.hantei_y1;
}
それぞれのx1y1は当たり判定の左上座標x2y2は右下の座標となっています。
ザックリ言えば「かぶった分だけ自キャラのいる方向に座標を修正」
ってカンジの処理なんですが、x座標y座標のどちらか片方だけならうまく動くのに、両方だと
例えばわずかに上にずれて横から当たった場合、上方向に修正が入るため座標が不自然に修正されてしまいます。
コレはもっと細かい場合に分けて考えたほうがいいかもしれませんね・・・
ということでこの処理は
考えるのめんどくさいのでまだまだ時間がかかりそうなので
飛ばして新しいマップ表示の実装に移ろうかなって思います。といったカンジの近況報告でした(・ω・)