有没有人对LibGDX中处理矩形和圆形三角形交叉的最佳方法有任何建议?我看到Intersector类有测试三角形和光线交叉点的方法,但我不知道如何直接将它应用于矩形或圆形。我还看到有一个isPointInTriangle方法,我可以使用它来循环遍历三角形和矩形的点?
http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/math/Intersector.html
也许我只是错过了LibGDX中一个简单的,已经存在的功能?非常感谢任何帮助。
答案 0 :(得分:1)
三角形和矩形都被认为是多边形,因此使用libGDX Polygon类来描述三角形和矩形,然后使用Intersector类来交叉它们。
对于圈子,您可以:
用多边形近似它(比如说圈中的10个点),然后使用Intersector类。
为多边形碰撞检查器创建自己的自定义圆圈。
一种用于检查多边形和圆形碰撞的简单算法:
if center of circle is inside the polygon =>>> they overlap.
else if distance between circle center and any of the polygons vertices is less then circle radius =>>> they overlap.
else =>>> they dont overlap.
这是考虑到你不需要知道这些数字的重叠部分究竟是什么,你只想知道它们是否重叠。如果你需要知道重叠部分,那么用多边形近似你的圆是唯一的方法。