有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

随机Java复杂路径冲突

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

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

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

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


共 (1) 个答案

  1. # 1 楼答案

    您需要将冲突代码更改为不在房间中使用Rectangle,而是使用Lines。java中的Rectangles可以方便地为Lines和Rectangles使用冲突检测方法

    Line2D.interects(Rectangle r) 
    

    如果你的播放器有一个矩形的碰撞遮罩,这就是它在播放器中的样子注意:代码在示例中缺失,比如在级别类中更新玩家掩码和声明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;
    }