Java LibGDX中矩形/圆的三角形碰撞

Java LibGDX中矩形/圆的三角形碰撞,java,libgdx,Java,Libgdx,对于在LibGDX中处理矩形和圆形三角形交点的最佳方法,有人有什么建议吗?我看到Intersector类有用于测试三角形和光线相交的方法,但我不确定如何将其直接应用于矩形或圆。我还看到了一个isPointIntTriangle方法,我可以用它来循环遍历三角形和矩形的点 也许我只是缺少了LibGDX中一个简单的、已经存在的函数?非常感谢您的帮助。三角形和矩形都被认为是多边形,所以请使用libGDX多边形类来描述三角形和矩形,然后使用Intersector类将它们相交 对于圆,您可以: 用多边形近

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


也许我只是缺少了LibGDX中一个简单的、已经存在的函数?非常感谢您的帮助。

三角形和矩形都被认为是多边形,所以请使用libGDX多边形类来描述三角形和矩形,然后使用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.
    

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

    谢谢!事实上,我也能找到这个,并且正如你提到的那样创建我自己的intersector类:正如你所知道的,你链接的方法比我所说的方法效率低,而且如果重复调用它,它也会产生大量垃圾,因为每次调用它时都会创建新的Vector2。但是,如果你的游戏中没有太多的圆圈,你可能会接受。谢谢-我会尝试重新制作,但它适合现在。我只有一个圆,最多10个多边形,所以我现在不希望出现性能问题。你不需要用多边形近似你的圆来知道重叠部分!