java - Libgdx 测试直线是否与矩形相交

标签 java android libgdx 2d

有没有办法可以测试矩形对象是否与直线碰撞?谢谢!

编辑:

public boolean overlapsLineNodes(Vector2 point1, Vector2 point2) {

    boolean collide = false;

    MapObjects mapObjects = play.getWorld().level.getCurrentLevel().getLayers().get("collidable").getObjects();

    Tools.shapeRenderer.setAutoShapeType(true);
    Tools.shapeRenderer.setProjectionMatrix(play.getCamera().combined);
    Tools.shapeRenderer.begin();

    for (RectangleMapObject rectangleObject : mapObjects.getByType(RectangleMapObject.class)) {

        rectangle.setX(rectangleObject.getRectangle().x * 1/64f);
        rectangle.setY(rectangleObject.getRectangle().y * 1/64f);
        rectangle.setWidth(rectangleObject.getRectangle().width * 1/64f);
        rectangle.setHeight(rectangleObject.getRectangle().height * 1/64f);

        float   x1 = rectangle.x, y1 = rectangle.y + rectangle.height,
                x2 = rectangle.x + rectangle.width, y2 = rectangle.y + rectangle.height,
                x3 = rectangle.x + rectangle.width, y3 = rectangle.y,
                x4 = rectangle.x, y4 = rectangle.y;

        Vector2 start = point1, end = point2;

        float[] floatArray = new float[]{x1, y1, x2, y2, x3, y3, x4, y4};
        polygon.setVertices(floatArray);

        if (Intersector.intersectLinePolygon(start, end, polygon)) {
            Tools.shapeRenderer.setColor(Color.GREEN);
            collide = true;
        }

        Tools.shapeRenderer.line(point1.x, point1.y, point2.x, point2.y);

        Tools.shapeRenderer.rect(rectangle.x, rectangle.y, rectangle.width, rectangle.height);

        Tools.shapeRenderer.setColor(Color.WHITE);


    }

我这样做了,但似乎没有给我正确的结果。我将所有矩形贴图对象渲染为白色,如果其中一个与线发生碰撞,则将其渲染为绿色。它随机地将一些呈现为绿色,我不明白为什么。

最佳答案

问题是 intersectLinePolygon 是错误的方法!我应该使用 intersectSegmentPolygon。

关于java - Libgdx 测试直线是否与矩形相交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37081798/

相关文章:

java - 调用对话框 : Not work on API 10

java - 在 libGDX 中使用来自 Android 的原始 AsyncTask

java - libGDX 和 Eclipse - 找不到 tools.jar

java - 如何为信用卡生成随机数

java - Java内置函数

java - 为什么我的 java 程序即使使用 .wav 文件也不会添加声音?

android - InflateException 错误膨胀类 fragment

java - 如何检测 android 应用程序的堆大小使用情况

java - generateCertificate() 时发生 CertificateException

android - LibGdx Assetmanager 加载无效行