当前位置: 首页 > 面试题库 >

Libgdx的圆和多边形碰撞

百里飞捷
2023-03-14
问题内容

Libgdx中是否可以验证多边形和圆之间的碰撞?

我看到了Intersector课程,但只发现了Circle和Rectangle的碰撞测试。那其他多边形呢?

如果我需要手动进行操作,那么使用Libgdx的最佳方法是什么?


问题答案:

因此,我设法在Circle和Polygon之间创建了碰撞测试方法。至少,它对我有用。

这是代码:

public boolean overlaps(Polygon polygon, Circle circle) {
    float []vertices=polygon.getTransformedVertices();
    Vector2 center=new Vector2(circle.x, circle.y);
    float squareRadius=circle.radius*circle.radius;
    for (int i=0;i<vertices.length;i+=2){
        if (i==0){
            if (Intersector.intersectSegmentCircle(new Vector2(vertices[vertices.length-2], vertices[vertices.length-1]), new Vector2(vertices[i], vertices[i+1]), center, squareRadius))
                return true;
        } else {
            if (Intersector.intersectSegmentCircle(new Vector2(vertices[i-2], vertices[i-1]), new Vector2(vertices[i], vertices[i+1]), center, squareRadius))
                return true;
        }
    }
    return false;
}


 类似资料:
  • 我正在为我的播放器和bullet类创建一些围绕精灵的矩形,以使用LibGDX的Intersector类中的重叠方法检测碰撞。 我有一个问题: 当我实例化Player和Bullet时,我使用sprite.getBoundingRectangle()在精灵周围创建一个边界框,它返回一个Rectangle对象。我在主类的其他地方更新这些的移动。 当我更新子弹/玩家精灵的移动时,我是否也需要更新子弹/玩家

  • 我有一个关于libGDX碰撞检测的问题。因为这是一个相当具体的问题,我还没有在互联网上找到任何好的解决方案。 因此,我已经创建了由不同身体部位组成的“人类”,每个部位都有矩形碰撞检测。 现在我想实现武器和技能,例如看起来像这样: 技能示例图像 问题 当有这样的技能时,在碰撞检测中使用矩形会让玩家非常沮丧:他们会成功躲避技能,但碰撞检测器仍然会伤害他们。 方法 1: 在我开始使用Libgdx之前,我

  • 我花了数小时寻找解决方案:我正在用libgdx开发一个自上而下的小游戏(可能这与我使用的引擎有关)。现在我必须在我的角色(圆形)和墙(矩形)之间实现碰撞检测。如果可以滑动,我希望角色在碰撞时沿着墙滑动。让我解释一下: 如果我向上移动45度,我可能会撞到墙的下面、左边或角落。 如果我与左边相撞,我想停止x运动,只向上移动。如果我离开墙壁,那么我想继续向上移动。与下侧相同(停止y运动) 如果我与角落相

  • 为什么这工作正常: 这会产生运行时错误 错误: 这没有任何意义。第一个代码工作正常,三角形画好了,但第二个代码不行。有人能解释一下我做错了什么吗...

  • 所以我试图用pygame制作一个我们之间的游戏。我刚刚开始,所以我没有太多东西,现在正在制作地图。然而,我正在努力解决的一件事是碰撞逻辑。地图目前有一个细长的八边形形状,但是我想不管是什么形状,我都会使用类似pygame多边形的东西。当我运行我现在的代码时,它会检查我的玩家(pygame矩形)和墙壁(pygame多边形)之间的碰撞,它说: 我发现这是因为pygame多边形返回了一个矩形,但在碰撞检

  • 我是libGDX的新手,据我所知,Intersector类有矩形/矩形、圆/圆、圆/矩形和多边形/多边形的重叠方法,但由于某种原因,它似乎没有任何检查多边形/矩形或多边形/圆的方法。 有没有推荐的方法来检查多边形和矩形/圆之间的冲突? 另外,为什么这被排除在跨部门类之外,有什么原因吗?(即,我应该避免它吗?如果是这样,推荐的替代方案是什么?