java-创建带有旋转的简单精灵多边形

java-创建带有旋转的简单精灵多边形,java,libgdx,polygon,intersection,Java,Libgdx,Polygon,Intersection,我想用libGDX做一个简单的游戏。 主精灵是一艘潜艇,可以通过其中心原点(宽度/2,高度/2)旋转 这个精灵是我游戏中唯一一个会旋转的精灵,也是唯一一个需要多边形的精灵,对于其他精灵来说,一个矩形边框就足够了。 我需要创建一个多边形,这样我才能处理交点。 多边形将是一个非常简单的多边形,只有8个顶点 如果我知道精灵的位置、旋转和原点,如何获得多边形的顶点 这张图片可以准确地解释我想要什么: 您可以使用它并手动定义主体。它可能如下所示,从左下角顶点开始,按时钟方向一直到右下角。当然,您可以更改这

我想用libGDX做一个简单的游戏。 主精灵是一艘潜艇,可以通过其中心原点(宽度/2,高度/2)旋转

这个精灵是我游戏中唯一一个会旋转的精灵,也是唯一一个需要多边形的精灵,对于其他精灵来说,一个矩形边框就足够了。 我需要创建一个多边形,这样我才能处理交点。 多边形将是一个非常简单的多边形,只有8个顶点

如果我知道精灵的位置、旋转和原点,如何获得多边形的顶点

这张图片可以准确地解释我想要什么:

您可以使用它并手动定义主体。它可能如下所示,从左下角顶点开始,按时钟方向一直到右下角。当然,您可以更改这些值并将其调整为您的精灵

float[] vertices = new float[] {
    -2,   -2,
    -2,    2,
    -0.5f, 2,
    -0.5f, 3,
     0.5f, 3,
     0.5f, 2,
     2,    2,
     2,   -2
};

Polygon submarine = new Polygon();
submarine.setVertices(vertices);
现在你可以旋转这个多边形,就像精灵一样,移动它并缩放它。只要确保多边形和精灵保持同步。对于可以使用的碰撞

为了调试多边形,可以使用渲染器在屏幕上渲染它

shapeRenderer.begin();
shapeRenderer.polygon(polygon.getTransformedVertices());
shapeRenderer.end();

为什么可能重复?我还没有任何多边形,我想先创建它。我假设你有一个由顶点定义的多边形,你需要数学帮助来旋转它们。我实际上两者都需要..我如何才能绘制多边形的spritebatch?我想定义8个点,然后用键盘移动每个点,直到找到完美的匹配点。@Paul我编辑了我的答案。您可以对多边形或单点使用ShaperEnder。有没有办法在spritebatch上绘制多边形?因为我的相机连接了一个摄像头,它总是在移动,跟随我的潜艇,多边形总是在前面。你也可以将它连接到ShaperEnder。getProjectionMatrix(camera.combined)谢谢,我还遇到了一个问题。我的多边形是-126.0f、194.0f、115.0f、210.0f、143.0f、227.0f、148.0f、240.0f、168.0f、247.0f、177.0f、228.0f、196.0f、227.0f、188.0f、191.0f。如果我将原点设置为潜艇图片原点,则旋转不是从其中心开始的。。我需要做什么?