【发布时间】:2011-02-04 09:13:40
【问题描述】:
我正在开发一个简单的基于图块的 2D 游戏。我有一个关卡,里面填充了可以与图块以及彼此交互的对象。检查与 tilemap 的碰撞相当容易,并且可以对具有线性复杂度的所有对象完成。但是现在我必须检测对象之间的碰撞,并且现在我必须检查每个对象与其他所有对象,这会导致平方复杂度。
我想避免平方复杂度。是否有任何众所周知的方法来减少对象之间的碰撞检测调用。是否有任何易于维护并允许一次拒绝许多冲突的数据结构(可能像 BSP 树)。
例如,关卡中的对象总数约为 500 个,一次在屏幕上看到的对象总数约为 50 个...
谢谢!
【问题讨论】:
-
您想要对所有物体进行碰撞检测还是只对可见物体进行碰撞检测?
-
嗯。还不确定。我想我可以忽略与屏幕外物体的碰撞
-
在这种情况下,您只能收集可见对象并对它们进行碰撞检测。仍然是 O(n^2) 时间复杂度。
标签: complexity-theory collision-detection