超大地图的碰撞检测优化问题

超大地图的碰撞检测应该如何优化?
用四叉树算法减少碰撞候选者是可以,但是如果地图上物体都在移动,每帧都要更新四叉树,再配上超大的地图,性能还是会很差。

我也想知道 :smirk_cat:

四叉树应该可以解决吧,超大地图也不影响四叉树呀,四叉树也只是筛选区域的碰撞体来碰撞,说到底,还是碰撞物体太多,还能怎么优化?屏幕外能不检测?我觉得四叉树已经是个比较好的解决方案了,而且这里的超不超大地图好像和碰撞没关系。

1赞

这肯定都是视野范围内的才移动吧

我如果1000个物体,750×750范围只要10ms左右,但是在10000×10000范围就炸了,到30ms多了

那视野外的攻击子弹一些怎么处理

有没有尝试过调整分割分区的大小和分区的容量?导致时间增加的原因能找到,就能针对优化

我试过限制最大深度,还是一样,时间没有减少太多,所以有点懵,不晓得是不是出问题在这里

地图大了,密度小了,按道理不应该是四叉树发挥更大的作用吗?

我建议你看看地图大小变化前后的帧时间是哪些函数的时间占用提高了,原因是什么。

好的好的,谢谢谢谢,我去查查

不客气的,你的成果也能让论坛的大伙以后有一个示例可以参考

找到问题了,是因为地图大了,img_v3_0257_5bbf887b-ef1b-435a-a38b-37ae79ee7f2g 在碰撞检测中这个函数计算量大了,所以变卡了,后面改成中心点计算距离,好很多了

四叉树算法确实和地图的范围没有太大影响

嗯嗯,找到问题就好

1赞