Java 复杂路径冲突

Java Complex Path Collision

我在随机生成的地牢迷宫游戏中一直遇到碰撞问题。所以基本上,我的游戏随机生成房间和它们之间的路径。但是,我检测碰撞的方式是通过矩形:

public Rectangle getBounds(){
    return new Rectangle(x, y, w, h);
}

由于我使用矩形来检测碰撞,每当我试图离开房间并进入通道时,房间的碰撞矩形都会阻止我这样做。 Me Me(blue box) 试图进入绿色路径(但我不能因为房间的碰撞矩形),红色框是房间,蓝色轮廓是碰撞框。

有没有办法解决这个问题,或者有更好的方法来检测碰撞?

您需要将碰撞代码更改为不对房间使用 Rectangle,而是使用 Line。 java 中的 Rectangles 方便地具有 Lines 与 Rectangles 的碰撞检测方法。

Line2D.interects(Rectangle r) 

如果您的播放器具有矩形碰撞遮罩,这就是它在播放器中的样子 class注意: 示例中缺少代码,例如更新玩家面具和 List<Line2D.Float> walls 关卡 class 的声明。(或任何您拥有的代码)

Rectangle mask = new Rectangle.Float(x, y, width, height);

protected boolean wallCollision() {
     for (Line2D.Float l : level.walls) {
          if (l.intersects(this.mask)
               return true;
     }
     return false;
}