libgdx box2d drawarc

时间:2012-12-05 15:23:17

标签: java libgdx box2d draw

我是Libgdx和box2d的新手。我需要绘制弧线。我搜索了一个函数,最后我出现了如下

public void drawarc (float centerx, float centery,float radius, float anglefrom, float anglediff, int steps)
{
    EdgeShape ps = new EdgeShape();

    FixtureDef psfd = new FixtureDef();
    psfd.shape = ps;

    BodyDef psbd = new BodyDef();
    psbd.allowSleep = true;
    psbd.awake = true;
    psbd.position.set(centerx, centery);
    psbd.gravityScale = 0;

    Vector2[] vertices = new Vector2[steps];

    for (int i = 0; i < steps; i++) {
        double angle=Math.toRadians(anglefrom+anglediff/steps*i);
        Vector2 sc = new Vector2((float)(radius * Math.cos(angle)), 
                (float)(radius * Math.sin(angle)));
        vertices[i] = sc;
    }

    Body psd = world.createBody(psbd);

    for (int i = 1; i < steps; i++) {
        ps.set(vertices[i-1], vertices[i]);
        psd.createFixture(psfd);
    }
}

它工作正常,但我不确定它是否正确。请你检查并告诉我它是否有效/正确?

由于

1 个答案:

答案 0 :(得分:1)

看起来你正在使用box2d的调试渲染。它可能有用,但通常不是一个好方法。您可以保持arc-vertex创建代码,但以不同方式呈现它。查看com.badlogic.gdx.graphics.glutils.ShapeRenderer.polyline方法。这也不是最好的解决方案,但是比你的方法更简单,更方便,因为当你不需要时,你正在创建一个新的物理身体。

请注意,您不应该使用调试绘制来进行游戏渲染,因为它是 debug 绘制而不是非常快。正确的方法可能是使用Mesh类。