我正在制作一个简单的游戏,但我似乎无法旋转简单的多边形。我在下面做了一个测试。
我在上面初始化了(ShapeRenderer shape
)和(shape = new ShapeRenderer()
)。
以下是我的代码。
float x1 = 200;
float y1 = 200;
float x2 = 250;
float y2 = 200;
float x3 = 250;
float y3 = 250;
float x4 = 200;
float y4 = 250;
float[] f = {x1,y1,x2,y2,x3,y3,x4,y4};
Polygon polygonTest = new Polygon();
polygonTest.setVertices(f);
polygonTest.setOrigin(x1+25,y1+25);
polygonTest.rotate(-45f);
shape.begin(ShapeRenderer.ShapeType.Line);
shape.polygon(polygonTest.getVertices());
shape.end();
旋转后,我使用polygonTest.getRotation()
仔细检查其旋转值,并返回正确的值。我也尝试了正值而没有参数中的“f”(浮点)指标,但没有运气。
我刚刚提到的所有关于setOrigin的特定问题的线程然后旋转,但它对我不起作用。
任何帮助表示赞赏!
getVertices()
的Polygon
方法返回多边形的局部顶点而不进行缩放或旋转。
使用getTransformedVertices()
在缩放,旋转后返回多边形的顶点。
这是测试代码:
public class GdxTest extends ApplicationAdapter {
ShapeRenderer shapeRenderer;
Polygon polygonTest;
@Override
public void create() {
shapeRenderer= new ShapeRenderer();
float x1 = 200;
float y1 = 200;
float x2 = 250;
float y2 = 200;
float x3 = 250;
float y3 = 250;
float x4 = 200;
float y4 = 250;
float[] f = {x1,y1,x2,y2,x3,y3,x4,y4};
polygonTest = new Polygon();
polygonTest.setVertices(f);
polygonTest.setOrigin(x1+25,y1+25);
polygonTest.rotate(-45f);
}
@Override
public void render() {
Gdx.gl.glClearColor(0,0,0,1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
if (polygonTest.getRotation()<360){
polygonTest.setRotation(polygonTest.getRotation()+1);
}else
polygonTest.setRotation(0);
shapeRenderer.begin(ShapeRenderer.ShapeType.Line);
shapeRenderer.polygon(polygonTest.getTransformedVertices());
shapeRenderer.end();
}
@Override
public void dispose() {
shapeRenderer.dispose();
}
}