タイル マップで衝突検出を実行しようとしている Java ゲームを開発していますが、希望どおりに動作していません。キャラクターに4つの長方形を作りました。上下左右に1つずつ。長方形はすべて、幅が速度の 2 倍です。
四角形がタイル上の四角形と交差するかどうかを確認するには、このコードを使用します
if(LeftSide.intersects(Map.colRect[i])){
MovingLeft = false;
x_pos+=vel;
}
長方形を定義するには、このコードを使用します
LeftSide = new Rectangle(x_pos,y_pos+(vel*2),(vel*2),spriteHeight-1-(vel*4));
RightSide = new Rectangle(x_pos+spriteWidth-1,y_pos+(vel*2),(vel*2),spriteHeight-(vel*4)-1);
UpSide = new Rectangle(x_pos+(vel*2),y_pos,spriteWidth-(vel*4)-1,(vel*2));
DownSide = new Rectangle(x_pos+(vel*2),y_pos+spriteHeight-1,spriteWidth-(vel*4)-1,(vel*2));
何が起こるかというと、プレイヤーが壁にぶつかり、速度と同じだけ壁に入り、速度だけ壁から押し出されたときです。これにより、壁にぶつかってキーを押したままにするたびに、キャラクターがぼやけた動きをして前後に移動するだけになります。
これを修正するために使用できるアルゴリズムはありますか? または別の方法ですか?
キャラクターの四角形は次のようになります。
どんな助けでも大歓迎です。私は本当にこれを修正したい
ありがとう