我有一个像这样的三角形;
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)固定到一个角度。我怎样才能做到这一点? 感谢。
答案 0 :(得分:1)
要进行固定旋转,您只能旋转ShapeRenderer
一次。
我可以考虑两种可能的方式:
shapeRenderer.rotate(0, 0, 1, 45);
/ create()
方法中调用show()
此调用将ShapeRenderer
围绕Z-Axis
(第3个参数)旋转45°(最后一个参数)shapeRenderer.rotate(0, 0, 1, 45);
。因此,您必须保留boolean rotated
,并且只有false
您拨打rotate()
并将其设为true
。回答你的评论中的问题:你不能直接设置旋转,你只能旋转(相对于当前的旋转)。所以我建议存储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会这样做。但我认为你不需要那个。