为什么 Slick2d 点不与矩形相交?
Why does a Slick2d Point not intersect a Rectangle?
当我执行这段代码时:
Point p = new Point(1,1);
Rectangle r = new Rectangle(0 ,0 , 10 ,10);
if(p.intersects(r)){
System.out.println("Collided");
}
它从不打印 Collided。这是为什么?
两个对象都是
org.newdawn.slick.geom
实施,非标准 Java 个
这是个好问题。为了找出为什么我做了一些研究
Point p = new Point(0,0);
System.out.println(p.closed()); // TRUE
System.out.println(p.getPointCount()); // 1, logically
然后我在 Shape class 中的 Slick2d 存储库中搜索。我认为这些行是它不起作用的原因:
boolean result = false;
float points[] = getPoints(); // Get all points of our shape
int length = points.length; // count them. here length==1
if (!closed()) {
length -= 2; // as we see the point is a closed shape, here length=-1
}
for(int i=0;i<length;i+=2) { // Does not even enter the complicated work because length == -1
// Complicated thing to test if intersect with a lot off points
}
return result; // here return false
这是你的问题的理由。不知道是bug还是开发者的意愿。你仍然可以设置一个问题。
作为解决方案,我建议构建一个 Rectangle(x,y,1,1) 并与之相交。这是你想要的工作,因为它是一个 4 点形状
当我执行这段代码时:
Point p = new Point(1,1);
Rectangle r = new Rectangle(0 ,0 , 10 ,10);
if(p.intersects(r)){
System.out.println("Collided");
}
它从不打印 Collided。这是为什么?
两个对象都是
org.newdawn.slick.geom
实施,非标准 Java 个
这是个好问题。为了找出为什么我做了一些研究
Point p = new Point(0,0);
System.out.println(p.closed()); // TRUE
System.out.println(p.getPointCount()); // 1, logically
然后我在 Shape class 中的 Slick2d 存储库中搜索。我认为这些行是它不起作用的原因:
boolean result = false;
float points[] = getPoints(); // Get all points of our shape
int length = points.length; // count them. here length==1
if (!closed()) {
length -= 2; // as we see the point is a closed shape, here length=-1
}
for(int i=0;i<length;i+=2) { // Does not even enter the complicated work because length == -1
// Complicated thing to test if intersect with a lot off points
}
return result; // here return false
这是你的问题的理由。不知道是bug还是开发者的意愿。你仍然可以设置一个问题。
作为解决方案,我建议构建一个 Rectangle(x,y,1,1) 并与之相交。这是你想要的工作,因为它是一个 4 点形状