在Libgdx中绘制并旋转等边三角形

时间:2015-12-13 23:04:20

标签: java android libgdx

嗨我试图使用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();

问题是三角形围绕与中心不同的轴旋转。

1 个答案:

答案 0 :(得分:0)

大家好我实际想通了。

    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())。希望这有助于某人。