我已经开发了一个入侵者网格,我可以射向子弹。
我知道用于碰撞检测的唯一解决方案是使用两个Rectangles
和Intersects
方法。
现在,我觉得将每个项目符号与屏幕上的每个入侵者进行比较是没有效率的。
我能在这里使用的另一种解决方案是更智能,只比较一些入侵者。
我建议为X轴使用一个标志,该标志在发射时填充了子弹的X位置。入侵者精灵将有权访问此标志,并且只有在入侵者精灵位于该X位置(+/-几个px)时才会运行intersects方法。这将大大减少比较次数。
有什么想法吗?感谢。
答案 0 :(得分:1)
你是对的,你可以做的事情可能更有效率。通过将空间划分为粗粒区域并查看子弹所在的区域,您可以删除其他区域中的入侵者。你可以更进一步,有多层“粗糙度”或分辨率。
这一思路的最后是一个名为quad tree的数据结构。这是一种自然而有效的二维碰撞检测方法。