[英]Collision detection in libgdx for triangles
我正在用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});
但是我通过使用我的孩子类的更新方法来移动它
boundingBox2.setPosition(position.x,position.y);
有没有办法使用内部的位置变化
shapeRenderer.polygon(kid.getVertices()); ?
无论如何,我非常感谢您的帮助,在解决了这个问题之后,我将关闭此线程:)
创建矩形和三角形的多边形。 如果要添加更多高级形状,甚至可以创建自定义多边形。
从矩形转换为多边形非常容易,几个月前我提出了一种方法
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();
现在,您将可以看到多边形。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.