0

だから私はJava RPGに取り組んでいて、衝突検出に固執しています。これが今までの私の地図です

地図

彼が青の上を歩くことはできないが、白いものの上を歩くことができるように私はそれを手に入れようとしています. 私が移動を行っている方法は、x オフセットと y オフセットを各テクスチャ x と y に適用し、wasd キーが押されたときにそれらを追加/削除することで、マップを移動させることです。これにより、マップであってもプレイヤーが動いているような効果が得られます。これは、検出のために試したコードです。

int x_offset = InGame.current_level.xoffset;
    int y_offset = InGame.current_level.yoffset;
    Rectangle player = new Rectangle(Math.round((x + x_offset) / 256),Math.round((y + y_offset) / 256),256,256);

for(int x = 0;x!= InGame.current_level.width;x++){
for(int y = 0;y!= InGame.current_level.height;y++){ 
int tile  = InGame.current_level.tiles[x+y* InGame.current_level.width];
            Rectangle tileRect = new Rectangle(x + x_offset ,y + y_offset,256,256);
            if(player.contains(tileRect)){
                System.out.println("Standing on " + tile);
                return;
                }
        }
    }

しかし、彼がどのタイルにも立っていないと表示されることもあれば、彼がタイルの上にいると表示されている場合は間違っていることがよくあります。各タイルは (x * 256) + xoffset を実行してレンダリングされ、y についても同じです。マップは int[] に格納され、配列の各部分はタイル ID に対応する数値です。

4

0 に答える 0