碰撞检测错误

时间:2013-07-22 00:07:16

标签: java 2d collision-detection

我尝试使用工厂设计模式扩展我的敌人产卵系统。

所以我有:Enemy(摘要):EnemyTyp eA,B,C,D ......等等,每一个都延伸到Enemy。

我有:(工作)

public void spawnEnemy(int type, int amount) {

    Enemy theEnemy =  null;
    for (int i=1; i<amount+1; i++ ) {
        theEnemy = enemyFactory.makeEnemy(type, 0-i*40, 400);
        aliens.add(theEnemy);
        health.add(2);
        System.out.println("Attack Message Recieved "+i);
    }
    repaint();
}

但我似乎无法让碰撞检测工作。

public void checkCollisions() {  
           Rectangle r3 = player.getBounds();
           ArrayList ms = player.getMissiles();
           for (int i = 0; i < ms.size(); i++) {
                Missile m = (Missile) ms.get(i);
                Rectangle r1 = m.getBounds();

                for (int j = 0; j<aliens.size(); j++) {
                    Enemy a = (Enemy) aliens.get(j);
                    Rectangle r2 = a.getBounds();

                    if (r1.intersects(r2)) {
                        m.setVisible(false);
                        a.setHealth(-1);
                        if(a.getHealth()==0){
                        a.setVisible(false);
                        }

                }}


            }
        }

我相信这是因为我把它变成了敌人(抽象),这就是我没有碰撞的原因。所以当我把这个项目从ArrayList中拿回来时,我怎么能拿出我放入的确切敌人类型最初在spawnEnemy()方法?使用theEnemy变量和instanceOf的组合?我非常困惑。

0 个答案:

没有答案