我想知道是否有可能找出一个Rect是否与另一个Rect相撞。问题是我不知道其他Rect是什么/在哪里。
我有一个可以移动的Rect(我知道它在哪里)。
我有很多其他的同一个"地图"。
我不想在地图上列出所有Rects,然后尝试使用collideRect与它们中的每一个。
在这种情况下,有没有人知道一个带有Rect的函数并返回与它碰撞的所有其他Rect的列表? (不对所有现有的Rect使用collideRect函数?)
我可以以某种方式"扫描"只有第一个Rect的区域,如果在同一个" spot"中有另一个Rect。我返回另一个Rect?
到目前为止我还没有得到任何结果......
答案 0 :(得分:1)
在某些时候,您需要检查Rect是否与任何其他Rect碰撞。考虑到这一点,有一些方法可以加快速度,基本上依赖于分组Rects。
例如,假设这些Rects是级别中不移动的对象,您可以按X坐标对它们进行排序,并记住最大宽度。当您想要运行碰撞检测时,从主Rect的左侧开始减去最大宽度,然后循环直到Rect的右侧。该范围之外的任何矩形都没有碰撞的能力,因此不需要进行检查。
或者,您可以将等级划分为16个正方形,并为每个正方形提供正方形内所有矩形的列表。然后,只需确定主Rect所在的方格,然后与那里的Rects进行比较。 (当然,有重叠的逻辑。)
有很多方法可以做到这一点。