我的一种方法中有一种非常奇怪的行为。
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语句,但这不是主要问题。真正让我感到惊讶的是,函数会反转返回的值。 如果我从其他类似的函数中调用它
boolean wtf=checkMapObjects(enemypos, playerpos);
wtf
将始终是应该返回的值的倒数。
谁能告诉我为什么?
只是为了测试我尝试返回true而不是false,但是值又被反转
答案 0 :(得分:1)
而是检查方法,尝试在forloop方法中打印Intersector.intersectLinePolygon(enemypos, playerpos, new Polygon(vects))
。
我猜它会返回false。
boolean currentIntersection=Intersector.intersectLinePolygon(enemypos, playerpos, new Polygon(vects))
答案 1 :(得分:0)