我开发了一个入侵者网格,我可以向其发射子弹。
我所知道的碰撞检测的唯一解决方案是使用两个 Rectangles
和 Intersects
方法。
现在,我觉得将每颗子弹与屏幕上的每个入侵者进行比较效率不高。
有没有我可以在这里使用的另一种解决方案,它更智能并且只比较一些入侵者。
我建议为 X 轴使用一个标志,该标志在发射时填充子弹的 X 位置。入侵者 Sprite 将有权访问此标志,并且仅当入侵者 Sprite 位于该 X 位置(+/- 几像素)时才会运行相交方法。这将大大减少比较次数。
有什么想法吗?谢谢。
最佳答案
你是对的,你可以做一些可能更有效的事情。通过将空间划分为粗粒度的部分并查看子弹在哪个部分,您可以修剪掉其他部分的入侵者。您可以更进一步,拥有多层“粗糙度”或分辨率。
在这个思路的最后是一个名为 quad tree 的数据结构。 .这是一种自然而有效的二维碰撞检测方法。
关于algorithm - 太空入侵者碰撞检测。 1颗子弹检查所有入侵者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11698403/