Java 如何获得Box2D多边形';s坐标?
我的身体上只有一个固定装置。附着到夹具的形状是多边形形状。为了渲染实体,我需要访问其顶点的坐标 这就是我所尝试的:Java 如何获得Box2D多边形';s坐标?,java,libgdx,box2d,Java,Libgdx,Box2d,我的身体上只有一个固定装置。附着到夹具的形状是多边形形状。为了渲染实体,我需要访问其顶点的坐标 这就是我所尝试的: Vector2 tmpVector = new Vector2(); Fixture f = body.getFixtureList().get(0); PolygonShape shape = (PolygonShape)f.getShape(); shape.getVertex(3, tmpVector); shape.getVertex(2, tmpVector); shap
Vector2 tmpVector = new Vector2();
Fixture f = body.getFixtureList().get(0);
PolygonShape shape = (PolygonShape)f.getShape();
shape.getVertex(3, tmpVector);
shape.getVertex(2, tmpVector);
shape.getVertex(1, tmpVector);
shape.getVertex(0, tmpVector);
当身体不与其他身体接触时,它起作用
问题是,当主体与另一主体碰撞时,getFixtureList
返回多个装置,这包括来自其他主体的装置
我如何解决这个问题
我所需要做的就是动态访问多边形实体的顶点位置。您可以使用
getBody()
方法检查夹具的实体是否等于body
:
Vector2 tmpVector = new Vector2();
Fixture f = body.getFixtureList().get(0);
while (f.getBody() != body)
{
f = f.getNext();
}
if (f != null)
{
PolygonShape shape = (PolygonShape)f.getShape();
// get vertices
}
当然,只有当您知道
body
只有一个具有多边形形状的夹具时,这才有效,正如问题中所述。否则,您可能会考虑使用<代码> USEDATABAS/COD>属性来存储不同夹具的信息。谢谢。但是这是获得多边形体坐标的正确方法吗?我不熟悉Box 2D的java端口,而C++中的代码> GGIGUTUTRISISTIST/<代码>永远不会返回一个不附加到主体的夹具。我知道这段代码看起来像一个把戏,但它是有效的,如果你说的是真的,我认为这是获得正确夹具的两种唯一方法。