为什么我的游戏碰撞检测关闭500px?

时间:2012-04-01 18:00:13

标签: java 2d collision-detection collision alien

我正在制作类似r型的东西;我制造了宇宙飞船,导弹,外星人,除了碰撞探测之外,一切都在工作。它似乎记录了玩家和敌人之间约500像素的碰撞,然后才知道我失败了。

Board.java:

public void checkCollisions() {
    Rectangle r1 = al.getBounds();
    ArrayList missiles = Craft.getMissiles();
    for (int w = 0; w < missiles.size(); w++)
    {
         Missile m = (Missile) missiles.get(w);
         Rectangle m1 = m.getRect();
         if (r1.intersects (m1) && al.Alive()) {
             al.isAlive = false;
             m.visible = false;
         }

    }

    Rectangle c = p.getBounds();
    if (c.intersects(r1)) {
        lost = true;
    }

Craft.java:

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

Enemy.java:

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

正如我所说 - 导弹工作正常,但是飞船和外星人之间的碰撞检测在x = 458中检测到,而它应该在大约1100-1200之间。

1 个答案:

答案 0 :(得分:3)

看起来您正在创建具有错误坐标的Rectangles对象。使用System.out.println(String s)打印创建矩形的坐标,并检查它们是否正确。

我怀疑玩家的矩形坐标不好,因为导弹工作正常,正如你所说。

你能把你游戏的完整代码发给我吗?我想尝试一下......