【问题标题】:Why is my game collision detection off by 500px?为什么我的游戏碰撞检测关闭了 500 像素?
【发布时间】:2012-04-15 13:06:20
【问题描述】:

我正在制作类似 r-type 的东西;我制作了宇宙飞船、导弹、外星人,除了碰撞检测之外,一切都在工作。在真正的外星人出现并说我输了之前,它似乎在大约 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 之间。

【问题讨论】:

  • "你能帮我解决一下吗?" - 如果您没有提供有关您的问题/碰撞检测算法/.. 的任何有用信息,则否
  • 如果您提供一些代码可以使用,有人可能会提供帮助。老实说,你怎么能在没有看到你的代码的情况下真正期待任何答案。

标签: java 2d collision-detection collision alien


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多