gpt4 book ai didi

java - 如何在 ShapeRenderer LibGDX/Java 中显示旋转的多边形

转载 作者:行者123 更新时间:2023-11-30 00:05:55 24 4
gpt4 key购买 nike

我正在制作一个简单的游戏,但我似乎无法旋转一个简单的多边形。我在下面做了一个测试。

我在上面初始化了 (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();

This is the output

旋转后,我使用 polygonTest.getRotation() 仔细检查了它的旋转值,它返回了正确的值。我也尝试过参数中没有“f”(浮点)指示符的正值,但没有成功。

我读过的关于这个特定问题的所有线程都提到了 setOrigin 然后轮换,但它对我不起作用。

感谢任何帮助!

最佳答案

Polygon

getVertices() 方法返回多边形的局部顶点,不缩放或旋转。

使用 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();
}
}

关于java - 如何在 ShapeRenderer LibGDX/Java 中显示旋转的多边形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49021463/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com