algorithm - 太空入侵者碰撞检测。 1颗子弹检查所有入侵者?

标签 algorithm xna 2d collision-detection

我开发了一个入侵者网格,我可以向其发射子弹。

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

现在,我觉得将每颗子弹与屏幕上的每个入侵者进行比较效率不高。

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

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

有什么想法吗?谢谢。

最佳答案

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

在这个思路的最后是一个名为 quad tree 的数据结构。 .这是一种自然而有效的二维碰撞检测方法。

关于algorithm - 太空入侵者碰撞检测。 1颗子弹检查所有入侵者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11698403/

相关文章:

algorithm - LZMA 压缩方法如何工作?

algorithm - 找到给定概率的分位数的时间复杂度

algorithm - 二数和算法

c# - 如何在单游戏中使用或制作 "Effects"?

xna - Farseer 还是 Box2D?自上而下的射击物理实现

c# - 用for循环填充矩阵

algorithm - 如何改进此算法以测试所有矩阵条目是否不同?

c#对象被奇怪地删除

javascript - 碰撞检测不应该使物体传送

python - 不使用 numpy 求矩阵中所有行的列总和