嗨,我被困在尝试使用libgdx绘制和旋转等边三角形。首先,我创建了一个以(50f,50f)为中心,边长为30f的任意等边三角形。我想使用ShapeRenderer绘制三角形并根据以下代码旋转:

    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    shapeRenderer.begin(ShapeRenderer.ShapeType.Line);
    shapeRenderer.identity();
    shapeRenderer.translate(50f, 50f, 0); // center of triangle
    shapeRenderer.setColor(1, 1, 1, 1);


    shapeRenderer.rotate(0, 0, 1, world.ship.rotation);

    shapeRenderer.triangle(50f-15f, 50f-13f, 50f+15f, 50f-13f, 50f,50f+13f);
    shapeRenderer.end();


问题在于,三角形绕与中心不同的轴旋转。

最佳答案

大家好,我实际上已经知道了。

    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    shapeRenderer.begin(ShapeRenderer.ShapeType.Line);
    shapeRenderer.identity();
    shapeRenderer.translate(150f, 150f, 0);
    shapeRenderer.setColor(1, 1, 1, 1);


    shapeRenderer.rotate(0, 0, 1, world.ship.rotation);

    shapeRenderer.triangle(0f-15f, 0f-13f, 0+15f, 0f-13f, 0f,0f+13f);
    shapeRenderer.end();


它非常愚蠢,但是您必须将三角形的中心定为原点,因为libgdx只能相对于原点进行旋转(非常烦人)。然后,您翻译旋转的形状(请记住,转换是按照文档的相反顺序进行的,因此在我的代码中,rotate()首先是setColor(),然后是translate())。希望这对某人有帮助。

10-08 14:29