只要学习一下四叉树和八叉树,一切问题都很明了啦~~
碰撞计算本身也有可优化空间,但是并不是重点。利用四叉树可以成千上万倍的缩小检测规模,是最首要的。
来张图解释思想原理。截图来自:空间索引 - 四叉树 - 枕边书 - 博客园:
我们的步骤是:
1、快速批量排除大量毫无关系的物体。
2、在小范围内查找或者检测具体某个物体。
看图具体来说,主角在大地图上,有可能和如此之多的物体发生碰撞……但是有一点是显然的,如果主角和物体不处于同一个格子内,那么肯定不会碰到……好了,这一棍子打死好大一片,如果我们给空间分好了格子(有层次的划分,就是四叉树),那么瞬间绝大部分物体就被我们跳过了。
接下来一个最小的小格子里最多也就那么几个物体,依次判断即可。
重要的技术往往有一个非常简单的内核。只要理解了上图,再去学习四叉树的具体实现应该就不难了。
摘自知乎