java - libgdx box2d drawarc

标签 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);
    }
}

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

谢谢

最佳答案

看起来您正在使用 box2d 的调试渲染进行绘图。它可能有效,但通常不是一个好方法。您可以保留您的 arc-vertex 创建代码,但以不同的方式呈现它。查看 com.badlogic.gdx.graphics.glutils.ShapeRenderer.polyline 方法。这也不是最好的解决方案,但比您的方法更简单且更有效,因为您正在创建一个新的 body ,而您并不需要它。

请注意,您不应使用调试绘制来进行游戏渲染,因为它是调试 绘制并且速度不是很快。正确的方法可能是使用 Mesh 类。

关于java - libgdx box2d drawarc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13726531/

相关文章:

java - 为什么在 java src 中 Integer 类的 toString 方法中使用负 int 进行 mod 操作

java - UML 到 java 翻译

java - 如何修复错误 :Execution failed for task ':android:processDebugResources' ?

java - 根据我的模型渲染我的世界

java - 如何平移矩形位置?

ios - 更改现有 Swift iOS 应用程序中的 b2_velocity 阈值

java - 在 Java 中如何在字符串 I/O 和对象 I/O 流之间切换?

Java Webservice 在 Apache Tomcat 上命中代理而不是目标

c++ - Box2D 编译麻烦。空指针

javascript - Box2dWeb 动态与静态物体恢复