-1

弾丸とモンスターが長方形を使用して衝突したときに弾丸とモンスターを解放する必要があるゲームがありますが、衝突が発生したときにメソッドが true を返さない

これが私がやったことです:私は各弾丸/モンスターの境界を設定しました

bounds.left = (int)X;
bounds.top = (int)Y ;
bounds.right = (int)X + monsterWidth;
bounds.bottom = (int)Y + monsterHeight;

次に、ブールメソッドを作成しました

return bounds.intersect((int)X,(int) Y ,(int) X + monsterWidth, (int) Y + monsterHeight);

両方にこの境界があり、ゲームスレッドでそれらを呼び出します

int i=0, j=0;
        while (!monster.isEmpty() && monster.size()>i){
            j=0;
            while (!bullets.isEmpty() && bullets.size()>j){
                if(monster.get(i).isColliding(bullets.get(j).getBounds())){
                    Log.v("collided", "Collided!");
                    monster.get(i).setRelease(true);
                    bullets.get(j).setRelease(true);
                }
                j++;
            }
            i++;
        }

私は境界のそれぞれにログを持っており、両方とも正しい left<=right top<=bottom ですが、 iscolliding メソッドにはログがありません。私は交差(左、上、右、下)を試しましたが、それでも同じです。

4

2 に答える 2

1

これは私の四角形から四角形への衝突チェック方法です(両方の四角形が軸に整列していると仮定します)

where x1 is x start
where x2 is x1 + rect width
where y1 is y start
where y2 is y1 + rect height

_x1、_x2、_y1、_y2 は同じ式を使用していますが、2 番目の四角形を表しています。

bool boolResult = false;

    if (x2 >= _x1 && x1 <= _x2 && y2 >= _y1 && y1 <= _y2)
    {
        boolResult = true;
    }

return boolResult;

それは私のために働いているので、あなたのためにうまくいくかどうか見てください

于 2013-07-28T11:40:07.737 に答える
0

私は変更することでこれを解決しました:

return bounds.intersect

bounds.contains(r)

それだけです〜

于 2013-07-30T03:29:46.080 に答える