【问题标题】:How to get a Box2D Polygon's coordinates?如何获得 Box2D 多边形的坐标?
【发布时间】:2015-04-10 20:16:45
【问题描述】:

我有一个只有一个固定装置的身体。附加到夹具的形状是 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);

当身体不与其他身体接触时,它会起作用。

问题在于,当 body 与另一个 body 碰撞时,getFixtureList 返回多个夹具,其中包括来自其他 body 的夹具。

我该如何解决这个问题?

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

【问题讨论】:

    标签: java libgdx box2d


    【解决方案1】:

    您可以使用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 恰好有一个具有多边形形状的灯具时才有效,正如问题中所说。否则,您可能会考虑使用userData 属性来存储有关不同灯具的信息。

    【讨论】:

    • 谢谢。但这是获取多边形主体坐标的正确方法吗?
    • 我不熟悉 Box2D 的 Java 端口,并且在 C++ 中getFIxtureList 从不返回未附加到主体的固定装置。我知道这段代码可能看起来像个把戏,但它确实有效,如果你说的是真的,我认为这是获得正确夹具的唯一方法。
    猜你喜欢
    • 2012-07-05
    • 1970-01-01
    • 2011-04-19
    • 2018-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-27
    相关资源
    最近更新 更多