嗨我试图使用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();
问题是三角形围绕与中心不同的轴旋转。
答案 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())。希望这有助于某人。