Java复杂路径冲突

时间:2015-05-24 00:24:40

标签: java random collision-detection

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

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

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

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

1 个答案:

答案 0 :(得分:1)

您需要将碰撞代码更改为不将Rectangle用于房间,而是使用Line s。 java中的Rectangle方便地为Line s的Rectangle提供了碰撞检测方法。

Line2D.interects(Rectangle r) 

如果你的玩家有一个矩形的碰撞面具,这就是它在玩家class中的样子。 注意:代码在示例中缺失,例如在级别类中更新玩家掩码和List<Line2D.Float> walls声明。(或者您拥有它的任何地方)

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;
}