如何获得Box2D Polygon的坐标?

时间:2015-04-10 20:16:46

标签: java libgdx box2d

我的身体只有一个固定装置。附加到夹具的形状是PolygonShape。为了渲染主体,我需要访问它的顶点坐标。

这就是我的尝试:

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会返回多个夹具,这包括来自其他身体的夹具。

如何解决这个问题?

我需要做的就是动态访问多边形体的顶点位置。

1 个答案:

答案 0 :(得分:1)

您可以使用body方法检查灯具的正文是否等于getBody()

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只有一个具有多边形形状的夹具时,这项工作才有效,正如问题所述。否则,您可以考虑使用userData属性来存储有关不同灯具的信息。