簡體   English   中英

libgdx box2d drawarc

[英]libgdx box2d drawarc

我是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);
    }
}

它的工作正常,但我不確定它的正確方法。 您能檢查一下並告訴我它是否有效/正確嗎?

謝謝

看起來您正在使用box2d的調試渲染進行繪制。 它可能有效,但通常不是一個好的方法。 您可以保持arc-vertex創建代碼,但是以不同的方式呈現它。 查看com.badlogic.gdx.graphics.glutils.ShapeRenderer.polyline方法。 這也不是最好的解決方案,但是比您的方法更容易實現,而且效率更高,因為您不需要的時候就可以創建一個新的物理身體。

請注意,您不應該將調試繪制用於游戲渲染,因為它是調試繪制並且速度不是很快。 正確的方法可能是使用Mesh類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM