Java复杂路径冲突

问题描述 投票:2回答:1

我在随机生成的地牢迷宫游戏中遇到碰撞时遇到了麻烦。因此,基本上,我的游戏会在它们之间随机生成房间和通路。但是,我检测碰撞的方式是通过矩形:

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

由于我使用矩形来检测碰撞,因此每当我尝试离开房间并进入通道时,房间的碰撞矩形都会阻止我这样做。Dungeon GenerationMe Me(蓝色框)正尝试进入绿色通道(但由于房间的碰撞矩形而无法实现),红色框是房间,蓝色轮廓是碰撞盒。

我是否可以解决此问题,或者有更好的检测碰撞的方法?

java random collision-detection
1个回答
1
投票

您需要更改碰撞代码,以使房间不使用Rectangle,而要使用Line。 Java中的Rectangle方便地具有LineRectangle的冲突检测方法。

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;
}
© www.soinside.com 2019 - 2024. All rights reserved.