【问题标题】:What's the best way to do collision detection?进行碰撞检测的最佳方法是什么?
【发布时间】:2012-02-24 22:02:23
【问题描述】:

我需要定义一个作为“合法”区域的多边形,并允许用户在该多边形内移动一个矩形,防止他们将矩形移动到其点在多边形外的任何地方。

多边形是一个固定的形状,所以,我认为导入该形状的 PNG 并以这种方式拉点可能是最简单的,不知何故?但是我仍然不知道在用户拖动矩形时检查矩形坐标所涉及的数学,并测试他们在什么点将形状移动到边界多边形的边缘。

不幸的是,边界多边形是一个相当复杂的形状。我希望有人能指点我一个教程,该教程显示了运行这种碰撞检测的最佳方法是什么。

【问题讨论】:

    标签: android collision-detection polygon android-canvas


    【解决方案1】:

    Metanet 的excellent collision detection tutorial 有一个很好的部分,介绍了如何使用轴对齐边界框 (AABB) 和任意“墙”进行扫掠碰撞。

    如果您的多边形是凹的,您可能会发现首先将其分解为多个凸多边形最容易,这将简化可用的碰撞检测算法。

    【讨论】:

    • 这是一个很棒的教程,谢谢。我想我可以从那里解决。
    【解决方案2】:

    如果您只想检查矩形的角,则可以对每个角进行“内部”测试。 http://en.wikipedia.org/wiki/Point_in_polygon

    如果您还想确保多边形的任何尖部不会“刺穿”您的矩形,您可以对矩形中的 4 条线中的每条线与多边形中的所有线进行测试,看看它们是否相交. http://en.wikipedia.org/wiki/Line-line_intersection

    【讨论】:

      猜你喜欢
      • 2023-03-21
      • 2011-03-01
      • 2012-12-29
      • 1970-01-01
      • 2014-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多