我正在尝试在libGDX中制作一个简单的游戏。 主精灵是潜艇,它可以按其中心原点旋转(宽度/ 2,高度/ 2)。
这个精灵是唯一一个会在我的游戏中旋转的精灵,也是唯一一个需要多边形的精灵,对于其余的精灵,矩形边界框就足够了。 我需要创建一个多边形,所以我可以处理交叉点。 多边形将是一个非常简单的多边形,只有8个顶点。
如果我知道精灵,旋转和原点的位置,我怎样才能得到多边形的顶点?
此图片可以准确解释我想要的内容:
答案 0 :(得分:10)
您可以使用Polygon并手动定义正文。它可能如下所示,从左下角开始,顺时针方向直到右下角。您当然可以更改这些值并将其调整为精灵。
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();