【问题标题】:Triangle Collision with Rectangle/Circle in LibGDXLibGDX中与矩形/圆形的三角形碰撞
【发布时间】:2014-03-30 14:51:16
【问题描述】:

对于在 LibGDX 中处理三角形与矩形和圆形相交的最佳方法,是否有人有任何建议?我看到 Intersector 类具有测试三角形和射线相交的方法,但我不确定如何直接将其应用于矩形或圆形。我还看到有一个 isPointInTriangle 方法,我也许可以用它来循环遍历三角形和矩形的点?

http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/math/Intersector.html

也许我只是缺少 LibGDX 中一个简单的、已经存在的功能?任何帮助将不胜感激。

【问题讨论】:

    标签: java libgdx


    【解决方案1】:

    三角形和矩形都被认为是多边形,所以使用 libGDX Polygon 类来描述你的三角形和矩形,然后使用 Intersector 类来相交它们。

    对于圈子,您可以:

    1. 用多边形逼近它(比如圆圈周围有 10 个点),然后使用 Intersector 类。

    2. 创建您自己的自定义圆到多边形碰撞检查器。

    想到的检查多边形和圆碰撞的简单算法:

    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.
    

    这是考虑到您不需要知道这些数字的重叠部分到底是什么,而您只想知道它们是否重叠。如果你需要知道重叠部分,那么用多边形近似你的圆是唯一的方法。

    【讨论】:

    • 谢谢!实际上,我也能够找到它,并且只需创建我自己的交叉类,就像你提到的:stackoverflow.com/questions/15323719/…
    • 您知道,您链接的方法效率低于我所说的方法,并且由于每次调用时都会创建新的 Vector2,因此如果重复调用它也会产生大量垃圾。但是,如果您的游戏中没有太多圈子,您可能会接受。
    • 谢谢-我会尝试重新制作它,但它现在适合。我只有一个圆圈,最多有 10 个多边形,所以我预计暂时不会出现性能问题。
    • 你不需要用多边形近似你的圆来知道重叠部分!
    猜你喜欢
    • 1970-01-01
    • 2015-04-15
    • 2014-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-03
    • 2014-04-08
    相关资源
    最近更新 更多