java-用旋转创建一个简单的精灵多边形

时间:2014-01-03 14:22:48

标签: java libgdx polygon intersection

我正在尝试在libGDX中制作一个简单的游戏。 主精灵是潜艇,它可以按其中心原点旋转(宽度/ 2,高度/ 2)。

这个精灵是唯一一个会在我的游戏中旋转的精灵,也是唯一一个需要多边形的精灵,对于其余的精灵,矩形边界框就足够了。 我需要创建一个多边形,所以我可以处理交叉点。 多边形将是一个非常简单的多边形,只有8个顶点。

如果我知道精灵,旋转和原点的位置,我怎样才能得到多边形的顶点?

此图片可以准确解释我想要的内容: enter image description here

1 个答案:

答案 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();