我已经开发出一个可以发射子弹的入侵者网格。
对于碰撞检测,我知道的唯一解决方案是使用两个Rectangles
和Intersects
方法。
现在,我的感觉是,将每一颗子弹与屏幕上的每一个入侵者进行比较是不有效的。
还有另一个解决方案,我可以在这里使用,是更聪明的,只比较一些入侵者。
我建议为X轴使用一个标志,在发射时用子弹的X位置填充。入侵者精灵将有权访问此标志,并且只有在入侵者sprite位于X位置(+/-几个px)时才会运行intersects方法。这将大大减少比较的次数。
有什么想法吗?谢谢。
发布于 2012-07-28 05:12:19
你是对的,有些事情你可以做的更有效率。通过将空间划分为粗粒段,并查看子弹所在的部分,您可以在其他部分剪除入侵者。你可以走得更远,有多层的“粗糙”或分辨率。
在这个思路的最后是一个叫做四叉树的数据结构。这是一种自然有效的二维碰撞检测方法。
https://stackoverflow.com/questions/11698403
复制相似问题