1

可動キャラクターとタイルベースのグラフィックスとゲーム ロジックを採用するプロトタイプを Java で作成しました。各レベルのレイアウトは 10x10 の 2D 配列に格納されます。次のコードを使用して、プレーヤーが「1」(空の) タイルと衝突しているかどうかを検出すると、プレーヤーが配列内の最後の「1」タイルと衝突している場合にのみ正の値が返されます。これはなぜですか? この方法が非常に非効率的であることは理解しています。

for(int r = 0; r < levArray.length; r++) {
        for(int c = 0; c < levArray[0].length; c++) {
            if(levArray[r][c] == 1) {
                if(px >= r*64-9 && px <= (r+1)*64+11 && py >= c*64-30 && py <= (c+1)*64+30) {
                    isColliding = true;
                } else {
                    isColliding = false;
                }
            }
        }   
    }
4

2 に答える 2

3

衝突が見つかったら、ループを停止する必要があります (たとえば、ブレークを使用)。ここでループを最後まで実行すると、 isColliding 変数が配列の最後の項目に設定されます。

于 2013-09-27T15:49:34.480 に答える