子弹的刚体去掉,在子弹的组件里update去判断cc.Intersection.polygonCircle,应该比物理引擎性能高
对于子弹。。核心不是碰撞检测(默认用曼哈顿+分区)子弹超过100个压力就算渲染了 2d需要自定义assembler 3D 自定义mesh
子弹最好不要用物理,完全没必要,我做过塔防游戏,全屏最多300子弹200怪,都不会太卡。
1:碰撞优化。两个矩形是否相交, Rect.intersects
一般的子弹和怪物都可以当矩形处理,旋转什么的都可以不用考虑,人的观感差距不会很大。我在逻辑帧中给每个子弹和怪物都设置了实际的中心点和宽高,用于计算。
2:逻辑的优化。很多时候会有大量的遍历,然后嵌套各种触发器,导致cpu运行压力大,这个就要自己总结了。Chrome浏览器可以调试查看每帧运行的耗时,检查下耗时长的地方。
3:dc的优化,最简单的是屏幕外的不显示,这个根据坐标和宽高就能知道。然后就是图层合并,比如所有子弹用一个图集,节点放在一个层级中,怪物再来一个。
4:节点的回收利用。节点的创建和销毁都比较吃性能,像子弹和怪物这种单局内频繁刷新的,可以直接设置透明度为0回收,性能比直接设置active为false好。
5:建立性能检测机制。如果检查一段时间内平均帧数过低,就降低一些特效的显示,同屏子弹数量,伤害字体飘动等