Sad*_*ido 10 complexity-theory collision-detection
我正在开发一个简单的基于图块的2D游戏.我有一个级别,填充了可以与瓷砖互相交互的对象.检查与tilemap的碰撞是相当容易的,并且可以对具有线性复杂性的所有对象进行.但现在我必须检测对象之间的碰撞,现在我必须检查每个对象与其他所有对象,这会导致方形复杂性.
我想避免方形复杂性.是否有任何众所周知的方法来减少对象之间的冲突检测调用.是否存在任何数据结构(如BSP树),它们易于维护并允许一次拒绝许多冲突.
例如,关卡中的对象总数约为500,其中大约50个一次在屏幕上显示...
谢谢!
为什么不让瓷砖存储有关哪些对象占据它们的信息.然后,只要将对象移动到新图块,就可以检测到碰撞,方法是查看该图块是否已包含其他对象.
这几乎不需要任何费用.
您可以使用四叉树来划分空间并减少需要检查碰撞的对象数量。
乍一看,维护树可能需要大量 CPU 资源,但它也显着减少了检查数量(请参阅第一个链接中的演示)。