2012-07-28 43 views
1

我开发了一个入侵者的网格,我可以向子弹射击。太空入侵者碰撞检测。 1子弹检查所有入侵者?

我所知道的碰撞检测的唯一解决方案是使用两个RectanglesIntersects方法。

现在,我觉得将每一颗子弹与屏幕上的每一个入侵者进行比较都是无效的。

是否有另一种解决方案,我可以在这里使用,更智能,只比较一些入侵者。

我建议为X轴使用一个标志,它是在发射时用子弹的X位置填充的。入侵者精灵将有权访问该标志,并且只有在入侵者精灵位于该X位置(+/-几个像素)时才会运行相交方法。这会大大减少比较的次数。

任何想法?谢谢。

+2

我过早的优化感是刺痛的... – 2012-07-28 06:26:08

+0

@AndrewRussell这就是它:) – conor 2012-07-28 07:34:55

回答

1

你是对的,你可以做的事情可能更有效。通过将空间划分为粗粒部分并查看子弹所在的部分,可以在其他部分修剪入侵者。你可以更进一步,并有多层“粗糙”或分辨率。

在这个思路的结尾是一个数据结构,称为quad tree。这是在两个维度上进行碰撞检测的一种自然而有效的方法。

+0

这就是它被称为..一个朋友解释了它,但不记得算法的名称为我的生活。 – conor 2012-07-28 07:35:39