Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何获得Box2D多边形';s坐标?_Java_Libgdx_Box2d - Fatal编程技术网

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/<代码>永远不会返回一个不附加到主体的夹具。我知道这段代码看起来像一个把戏,但它是有效的,如果你说的是真的,我认为这是获得正确夹具的两种唯一方法。