返回 false 得到 true,反之亦然
returning false gets true and vise versa
我的一种方法有一个非常奇怪的行为。
boolean checkMapObjects(Vector2 enemypos, Vector2 playerpos) {
MapLayers layers = map.getLayers();
for (int i = 0; i < layers.getCount(); i++) {
MapLayer layer = layers.get(i);
if (layer.getName().contains("collision")) {
for (MapObject obj : layer.getObjects()) {
Rectangle rect = ((RectangleMapObject) obj).getRectangle();
float[] vects = {rect.getX(), rect.getY(), rect.getX(), rect.getY() + rect.height,
rect.getX() + rect.width, rect.getY() + rect.height, rect.getX() + rect.width, rect.getY()};
if (Intersector.intersectLinePolygon(enemypos, playerpos, new Polygon(vects)))
return true;
}
}
}
return false;
}
首先:该函数还使用最后一个 return 语句,但这不是主要问题。真正让我感到惊讶的是该函数会反转 returned 值。
如果我像这样从其他函数调用它
boolean wtf=checkMapObjects(enemypos, playerpos);
wtf
将始终是应该 returned 的值的倒数。
谁能告诉我为什么?
只是为了测试,我尝试 returning true 而不是 false,但值再次反转
与其检查方法,不如尝试在循环方法中打印 Intersector.intersectLinePolygon(enemypos, playerpos, new Polygon(vects))
。
我猜它返回了 false。
boolean currentIntersection=Intersector.intersectLinePolygon(enemypos, playerpos, new Polygon(vects))
找到了,敌人撞墙了。。。因为需要用Segment而不是line^^
我的一种方法有一个非常奇怪的行为。
boolean checkMapObjects(Vector2 enemypos, Vector2 playerpos) {
MapLayers layers = map.getLayers();
for (int i = 0; i < layers.getCount(); i++) {
MapLayer layer = layers.get(i);
if (layer.getName().contains("collision")) {
for (MapObject obj : layer.getObjects()) {
Rectangle rect = ((RectangleMapObject) obj).getRectangle();
float[] vects = {rect.getX(), rect.getY(), rect.getX(), rect.getY() + rect.height,
rect.getX() + rect.width, rect.getY() + rect.height, rect.getX() + rect.width, rect.getY()};
if (Intersector.intersectLinePolygon(enemypos, playerpos, new Polygon(vects)))
return true;
}
}
}
return false;
}
首先:该函数还使用最后一个 return 语句,但这不是主要问题。真正让我感到惊讶的是该函数会反转 returned 值。 如果我像这样从其他函数调用它
boolean wtf=checkMapObjects(enemypos, playerpos);
wtf
将始终是应该 returned 的值的倒数。
谁能告诉我为什么?
只是为了测试,我尝试 returning true 而不是 false,但值再次反转
与其检查方法,不如尝试在循环方法中打印 Intersector.intersectLinePolygon(enemypos, playerpos, new Polygon(vects))
。
我猜它返回了 false。
boolean currentIntersection=Intersector.intersectLinePolygon(enemypos, playerpos, new Polygon(vects))
找到了,敌人撞墙了。。。因为需要用Segment而不是line^^