前沿
这些年前端的大火大热,让js语言也水涨船高变得炙手可热,但js的计算性能一直以来都遭人诟病,在手机上表现更是糟糕,尤其在碰撞检测方面会消耗过高的cpu而导致卡顿。
最近做弹幕游戏所以碰到了这方面的问题,在一顿百度之后大概有了优化方向:四叉树。
关于四叉树是什么可参考百度百科传送门
如何和cocos的碰撞系统相结合?参考大佬[白玉无冰]的文章传送门
但是这样的cocos碰撞系统和四叉树相结合比较生硬,耦合度过高,不容易扩展,最重要的是cocos驱动帧率是在代码中写死的不能降低帧率,想要修改需要定制引擎。操作比较繁琐而且不易升级版本,在此情况下萌生了自己写一套碰撞系统的想法。说干就干,为了提升碰撞的极限性能,熬了几个通宵掉了三绰头发之后。系统的性能和易用性都让我满意了。
性能测试
我的环境:win7 i59400F AMD RX560 chrome
程序功能:碰撞到的物体改成绿色反之灰色
数量:2000;
cocos 68ms 16fps
my 38ms 33fps
my+tree 7ms 58fps
当开启四叉树时候,性能会是个质的飞跃,实测4000个物体消耗才32ms左右
这是测试地址大家可以自行测试验证。测试地址
插件特点
1.可视化配置参数,无需一句代码
2.支持四叉树
3.驱动函数可外部调用,以满足不同驱动频率设置,来提升性能
3.单独设置碰撞间隔,减少不必要的碰撞以提升性能
5.碰撞分组动态删除添加,支持自定义参数,单独绘制等特性
使用方法
1.安装好之后【扩展】->【碰撞系统】->【导入代码】导入代码
2.在需要的两个组件上添加碰撞组件lq_collide,设置装备形状为rect,类别为defalut
基本功能就完成啦,现在运行程序就能看到控制台信息啦
物体1 collide
物体2 collide
插件链接:商店地址
最后有任何使用问题可叫我qq:243011068