如何在libgdx中设置固定的shaperenderer旋转?

时间:2014-02-27 10:02:59

标签: java android libgdx

我有一个像这样的三角形;

shapeRenderer.begin(ShapeType.Line);
shapeRenderer.setColor(1, 1, 0, 1);
shapeRenderer.polygon(new float[] { -10, 0, 10, 0, 0, 200 });
shapeRenderer.rotate(0, 0, 1, 1);
shapeRenderer.end();

我在每个渲染中旋转1度。但我想将旋转(例如45)固定到一个角度。我怎样才能做到这一点? 感谢。

1 个答案:

答案 0 :(得分:1)

要进行固定旋转,您只能旋转ShapeRenderer一次。 我可以考虑两种可能的方式:

  1. 在构造函数或shapeRenderer.rotate(0, 0, 1, 45); / create()方法中调用show() 此调用将ShapeRenderer围绕Z-Axis(第3个参数)旋转45°(最后一个参数)
  2. 只有在您还没有旋转的情况下,才会在rendermethod中调用shapeRenderer.rotate(0, 0, 1, 45);。因此,您必须保留boolean rotated,并且只有false您拨打rotate()并将其设为true
  3. 回答你的评论中的问题:你不能直接设置旋转,你只能旋转(相对于当前的旋转)。所以我建议存储float rotation,每次轮换ShapeRenderer时都会设置新值。要以度为单位设置旋转,您必须旋转,如:

    shapeRenderer.rotate(0, 0, 1, newRotation - rotation);
    rotation = newRotation;
    

    仅当您始终围绕同一轴旋转时才有效,例如Z-axis。否则你将需要存储3次旋转(x,y,z)。如果围绕自定义轴旋转(例如由(0.1,0.3,0.6)定义),则需要计算所有轴的旋转。但我真的不知道该怎么做。我认为一些Vectormath会这样做。但我认为你不需要那个。