1

タイル マップで衝突検出を実行しようとしている 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)); 

何が起こるかというと、プレイヤーが壁にぶつかり、速度と同じだけ壁に入り、速度だけ壁から押し出されたときです。これにより、壁にぶつかってキーを押したままにするたびに、キャラクターがぼやけた動きをして前後に移動するだけになります。

これを修正するために使用できるアルゴリズムはありますか? または別の方法ですか?

キャラクターの四角形は次のようになります。長方形

どんな助けでも大歓迎です。私は本当にこれを修正したい

ありがとう

4

1 に答える 1