我正在创建一个Roguelike地下城生成器,其中一部分涉及检查一个房间(由x1,y1,x2,y2表示)和#34;是否发生碰撞"和另一个房间。如果是这种情况,房间将重新生成。我已经尝试了谷歌搜索,但我还没有发现任何有用的东西。这是基于我在网上发现的一些代码,但它似乎总是回归真实。
public static boolean isInside(int minX1, int minY1, int maxX1, int maxY1, int minX2, int minY2, int maxX2, int maxY2) {
if(Math.abs(minX1 - minX2) < (minX1 + maxX1) + (minX2 + maxX2)) {
if(Math.abs(minY1 - minY2) < (minY1 + maxY1) + (minY2 + maxY2)) {
return true;
}
}
return false;
}
感谢您阅读!
答案 0 :(得分:3)
您可以使用intersects()
类中的Rectangle
方法:
https://docs.oracle.com/javase/8/docs/api/java/awt/Rectangle.html#intersects-java.awt.Rectangle-
答案 1 :(得分:0)
我检查矩形的顶点是否在另一个矩形的内部。
if ((minX1 <= minX2 <= maxX1 || minX1 <= maxX2 <= maxX1 ) && (minY1 <= minY2 <= maxY1 || minY1 <= maxY2 <= maxY1))
return true;