返回 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^^