Java-创建一个带旋转的简单精灵多边形

3

我正在使用libGDX制作一个简单的游戏。

主要的精灵是一艘潜艇,可以通过其中心原点(宽度/2,高度/2)旋转。

这个精灵是我的游戏中唯一会旋转的精灵,也是唯一需要多边形的精灵,对于其他精灵,矩形边界框就足够了。

我需要创建一个多边形,以便处理交集。这个多边形将非常简单,只有8个顶点。

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

这张图片可以很好地解释我想要的内容:enter image description here


可能是重复的问题:如何围绕某个点旋转顶点? - Buhb
为什么?我还没有任何多边形,我想先创建它。 - Boldijar Paul
我假设你有一个由顶点定义的多边形,并且需要帮助旋转它们的数学计算。 - Buhb
我实际上需要两者都有。 - Boldijar Paul
1个回答

10
您可以使用 Polygon 并手动定义body。它可能类似于以下内容,从左下角顶点开始沿顺时针方向到达右下角。当然,您可以更改这些值并将其调整为您的sprite。
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);

现在您可以像操作精灵一样旋转、移动和缩放此多边形。请确保您同步多边形和精灵。对于碰撞,您可以使用Intersector

为了调试多边形,您可以使用ShapeRenderer在屏幕上呈现它。

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

我该如何在spritebatch中绘制多边形?我想定义8个点,并通过键盘移动每个点,直到完美匹配。 - Boldijar Paul
1
@Paul 我编辑了我的答案。你可以使用shaperenderer来绘制多边形或单个点。 - noone
有没有办法在 spritebatch 上绘制多边形?因为我的 spritebatch 附带了一个相机,它始终在移动,跟随我的潜艇,而多边形始终在前面。 - Boldijar Paul
1
你也可以将它附加到shaperenderer.getProjectionMatrix(camera.combined)。 - noone
你的顶点看起来很奇怪。似乎你在精灵不在(0, 0)而是在 ~(125,220)时捕获了这些点。请在真实原点(0, 0)周围捕获多边形的顶点。 - noone
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接