Rect与另一个未知Rect之间的碰撞

时间:2015-09-04 19:25:12

标签: python pygame collision rect

我想知道是否有可能找出一个Rect是否与另一个Rect相撞。问题是我不知道其他Rect是什么/在哪里。

  1. 我有一个可以移动的Rect(我知道它在哪里)。

  2. 我有很多其他的同一个"地图"。

  3. 我不想在地图上列出所有Rects,然后尝试使用collideRect与它们中的每一个。

  4. 在这种情况下,有没有人知道一个带有Rect的函数并返回与它碰撞的所有其他Rect的列表? (不对所有现有的Rect使用collideRect函数?)

    我可以以某种方式"扫描"只有第一个Rect的区域,如果在同一个" spot"中有另一个Rect。我返回另一个Rect?

    到目前为止我还没有得到任何结果......

1 个答案:

答案 0 :(得分:1)

在某些时候,您需要检查Rect是否与任何其他Rect碰撞。考虑到这一点,有一些方法可以加快速度,基本上依赖于分组Rects。

例如,假设这些Rects是级别中不移动的对象,您可以按X坐标对它们进行排序,并记住最大宽度。当您想要运行碰撞检测时,从主Rect的左侧开始减去最大宽度,然后循环直到Rect的右侧。该范围之外的任何矩形都没有碰撞的能力,因此不需要进行检查。

或者,您可以将等级划分为16个正方形,并为每个正方形提供正方形内所有矩形的列表。然后,只需确定主Rect所在的方格,然后与那里的Rects进行比较。 (当然,有重叠的逻辑。)

有很多方法可以做到这一点。