0

ここには、ロケットと発射体を含む 2 つの配列リストがあります。

public static ArrayList<Projectile> projectiles = new ArrayList<Projectile>();
private static ArrayList<Rocket> rockets = new ArrayList<Rocket>();

ときどき、発射体とロケットが適切な配列リストに追加されます。

rockets.add(new NormalRocket(x, -10, 70, 0, 2); // the constructor is (int x, int y, int speed, int dir, int health) but only x and y are relevant.

Rocket クラスと Projectile クラスの両方にメソッドがあります。

public Rectangle bounds() {
    return new Rectangle(x, y, width, height);
}

また、NormalRocket や MachineGunProjectile などのサブクラスにもそれがあります。

public Rectangle bounds() {
    return super.bounds();
}

これで、ロケットと発射体の間の衝突を次のようにチェックするメソッドができました。

private void collision(){
    for(int i = 0; i < rockets.size(); i++){
        for(int j = 0; j < projectiles.size(); j++){
            if(rockets.get(i).bounds().intersects(projectiles.get(j).bounds())){
                System.out.println("HIT!");
            }
        }
    }
}

しかし、それらが交差すると、何も起こらないように見えます。誰かが何が起こっているのか知っていますか、それともデバッグするためにさらにコードが必要ですか?

4

1 に答える 1

1

問題をデバッグするためのヒントをいくつか提供します

  1. ロケットと発射体の x、y 位置をテキストで描画してみてください。

  2. 外接する四角形が本当に正しく描画されているかどうかを確認できるように、外接する四角形も描画してみてください。

  3. 交差する 2 つの長方形を描画して交差関数を確認し、出力値を確認します。
于 2013-09-28T15:43:24.293 に答える