嗨,我被困在尝试使用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())。希望这对某人有帮助。