0

我正在制作类似 r-type 的东西;我制作了宇宙飞船、导弹、外星人,除了碰撞检测之外,一切都在工作。在真正的外星人出现并说我输了之前,它似乎在大约 500 像素内记录了玩家和敌人之间的碰撞。

板子.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;
    }

工艺.java:

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

敌人.java:

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

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

4

1 回答 1

3

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

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

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

于 2012-04-01T18:45:13.240 回答