我正在用libgdx做一个简单的游戏,想要添加一些简单的碰撞检测。我已经设法通过使用一个简单的矩形表达我的播放器:
boundingBox = new Rectangle(x + 10,y + 10,13,21);
但我的障碍似乎要复杂得多。 它们应该是尖峰,玩家可以跳跃并具有三角形形状。他们几乎看起来像这样: http://kayin.pyoko.org/iwbtg/forums/Smileys/iwbtg/spikes.gif
据我所知,libgdx中没有三角形。我已经尝试过使用多边形但是它们看起来太复杂了。
是否有一种简单的方法可以为它们实现精确的点击方框?
提前感谢您阅读我的帖子:)
编辑: 感谢大家的回复,现在一切正常,除了绘制我的多边形用于测试目的。当我打电话
shapeRenderer.polygon(kid.getVertices());
它只在左上角绘制我的多边形,因为它被定义为
boundingBox2.setVertices(new float [] {10,10,10,31,23,31,23,10}};
但是我使用
在我的kid class的更新方法中移动它boundingBox2.setPosition(position.x,position.y);
有没有办法在
中使用该位置变更shapeRenderer.polygon(kid.getVertices()); ?
无论如何我非常感谢你的帮助,在解决了这个问题后,我将关闭这个帖子:)
答案 0 :(得分:0)
创建矩形和三角形的多边形。 如果要添加更多高级形状,甚至可以创建自定义多边形。
要从矩形转换为多边形非常容易,我几个月前制作了一种方法
public static float[] rectangleToVertices(float x, float y, float width,
float height) {
float[] result = new float[8];
result[0] = x;
result[1] = y;
result[2] = x + width;
result[3] = y;
result[4] = x + width;
result[5] = y + height;
result[6] = x;
result[7] = y + height;
return result;
}
关于libGDX多边形类的好处是你可以移动多边形甚至旋转它,并获得变换后的顶点!
现在您可以使用Intersector类
public static boolean overlapConvexPolygons(Polygon p1,
Polygon p2)
Check whether specified convex polygons overlap.
Parameters:
p1 - The first polygon.
p2 - The second polygon.
Returns:
Whether polygons overlap.
出于测试目的,在您结束精灵批处理之后,请执行以下操作
batch.end(); // you end your spritebatch
renderer.setProjectionMatrix(camera.combined);
renderer.begin(ShapeType.Line)
renderer.polygon(polygonname.getVertices());
renderer.end();
现在您将能够看到您的多边形。