我正在使用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);
现在您可以像操作精灵一样旋转、移动和缩放此多边形。请确保您同步多边形和精灵。对于碰撞,您可以使用Intersector。
为了调试多边形,您可以使用ShapeRenderer在屏幕上呈现它。
shapeRenderer.begin();
shapeRenderer.polygon(polygon.getTransformedVertices());
shapeRenderer.end();