对于大多数引擎来说,大量对象之间的移动和碰撞会引发很多的问题,一个不留意就会把渲染速度给降下来,所以对大量对象的碰撞检测有很多的探讨余地,当然这也要结合项目的具体情况来实现。
如果只有6个相互作用的对象进行两两检测时,假设给定对象为A、B、C、D、E、F,那么它们需要进行以下15次检测:
AB、AC、AD、AE、AF
BC、BD、BE、BF
CD、CD、CF
DE、DF
EF
那么可以得到这种检测方法的次数是(N*N - N)/2,可以看到,检查的次数会随着对象的数量而飞速增长,100个单位单独检查的话,需要完成4950次,相信基本哪个引擎都经不起这样的折腾的,如果是应用上一节的hitTest方法,那能撑到50个就已经很了不起了。那么,居于格子的碰撞检测方法就可以有很好的施展空间了,具体以下进行讲解。
所谓居于格子检测方法,就是将地图分成一个个格子来考虑,一般我们习惯用一个二维数组存取每一个格子的数据,注意,单元格至少要和最大的对象一样大,然后根据对象中心所在的位置将各个对象分配到该网格的某个