Java libgdx中三角形的碰撞检测

Java libgdx中三角形的碰撞检测,java,libgdx,collision-detection,Java,Libgdx,Collision Detection,我正在用libgdx做一个简单的游戏,想添加一些简单的碰撞检测。我已经设法用一个简单的矩形来表达我的播放器: 边框=新矩形(x+10,y+10,13,21) 但我的障碍似乎要复杂得多。 它们被认为是运动员可以跳过的尖刺,呈三角形。它们看起来就像这样: 据我所知,libgdx中没有三角形。我已经尝试过使用多边形,但它们对于我来说太复杂了 有没有一种简单的方法为他们实现一个精确的点击框 提前感谢您阅读我的帖子:) 编辑: 谢谢大家的回答,现在一切都很好,除了为测试目的绘制多边形。当我打电话时 多边

我正在用libgdx做一个简单的游戏,想添加一些简单的碰撞检测。我已经设法用一个简单的矩形来表达我的播放器:

边框=新矩形(x+10,y+10,13,21)

但我的障碍似乎要复杂得多。 它们被认为是运动员可以跳过的尖刺,呈三角形。它们看起来就像这样:

据我所知,libgdx中没有三角形。我已经尝试过使用多边形,但它们对于我来说太复杂了

有没有一种简单的方法为他们实现一个精确的点击框

提前感谢您阅读我的帖子:)

编辑: 谢谢大家的回答,现在一切都很好,除了为测试目的绘制多边形。当我打电话时

多边形(kid.getVertices())

它只在左上角绘制多边形,因为它定义为

boundingBox2.setVertices(新的float[]{10,10,10,31,23,31,23,10})

但是我在kid类的更新方法中使用

boundingBox2.setPosition(位置x,位置y)

有没有一种方法可以利用内部的位置变化

多边形(kid.getVertices())


无论如何,我真的很感谢你的帮助,在解决了这个问题之后,我将关闭这个线程:)

创建一个矩形和三角形的多边形。 如果要添加更高级的形状,甚至可以创建自定义多边形

从矩形到多边形的转换是非常容易的,几个月前我提出了一个方法

public static float[] rectangleToVertices(float x, float y, float width,
        float height) {
    float[] result = new float[8];
    result[0] = x;
    result[1] = y;

    result[2] = x + width;
    result[3] = y;

    result[4] = x + width;
    result[5] = y + height;
    result[6] = x;
    result[7] = y + height;

    return result;
}
libGDX polygon类的好处是,您可以移动多边形,甚至旋转它,并获得变换的顶点

现在可以使用Intersector类了

public static boolean overlapConvexPolygons(Polygon p1,
                            Polygon p2)
Check whether specified convex polygons overlap.
Parameters:
p1 - The first polygon.
p2 - The second polygon.
Returns:
Whether polygons overlap.
出于测试目的,在结束sprite批处理后,请执行以下操作

batch.end(); // you end your spritebatch
renderer.setProjectionMatrix(camera.combined);
renderer.begin(ShapeType.Line)
renderer.polygon(polygonname.getVertices());
renderer.end();

现在您可以看到多边形了。

您知道如何绘制多边形以进行测试吗?我试过这样做:我现在也试过在两个多边形对象上使用重叠方法:if(OverlappConverExpolygons(boundingBox2,kid.getBoundingBox2()),但它说:类型Spike的方法OverlappConverExpolygons(Polygon,Polygon)未定义。(Spike是我的类名)这很奇怪,因为我传入了两个多边形对象。我已经编辑了我的答案。如果你有更多的问题,别忘了问,如果我的回答有助于你,别忘了接受并投票@user3501232 OverlappConverExpolyGons是Intersector类的静态方法,因此必须使用Intersector.OverlappConverExpolyGons(…)