关于一瞬间的大批量碰撞,是每一个碰撞体实现相关逻辑, 用事件返回给组件处理, 和直接碰撞中处理的性能差距大吗?? 还有就是瞬间碰撞过多的时候有没有什么优化方法

  • Creator 版本:

  • 目标平台:

  • 详细报错信息,包含调用堆栈:

  • 重现方式:

  • 之前哪个版本是正常的 :

  • 手机型号 :

  • 手机浏览器 :

  • 编辑器操作系统 :

  • 编辑器之前是否有其它报错 :

  • 出现概率:

  • 额外线索:

还有就是在碰撞中处理的话,需要获取组件 getComponent() 那么两种情况那种的性能会好点

不知道你所说的大批量的碰撞是什么意思,4000x4000的大型物理世界,树有几千棵,建筑物也很多并没有发现任何性能问题,bullet底层是高度优化的,我用了这么多年还没有遇到过性能问题,由于你的逻辑是单线程的直接回调和使用事件分发并没有任何本质区别

没区别啊??、 就是一群旋转的物体相撞, 在转速和移动的过程中 瞬间产生的碰撞回调次数是很多的, 就和微信小程序的 刀剑大乱斗一样的 瞬间碰撞

还有就是 碰撞中处理 肯定是线性 的执行, 但是事件的话是不是队列执行 在空余时间执行

用的什么测试设备?

低版本安卓盒子

他那个至少是手机啊!

自己写碰撞,碰撞算法也可以优化,相关的东西可以网上找下。。

网上肯定有, 但是 cocos的对于这种级别的游戏 我觉得应该够用啊 , 就是不知道 优化细节

而且 我总感觉 事件和 nodejs 里面应该差不多吧 会不会比直接执行好, 在瞬时调用次数多的时候

物理引擎本身其实并没有多大的优化空间,如果你想优化一下可以通过事件分发模拟一下协程的机制,单帧循环次数设置一个上限,达到上限就结束循环下一帧再继续执行,这样又会产生一个新问题就是你的逻辑不那么实时,主要看表现是否符合设计吧,U3d是使用自己定义的事件包装了一下物理引擎的回调,然后post到跟collider组件相关的所有脚本,并没有什么多玄乎的东西

哥们,你找到cocos解决这个问题得方法了嘛?我也来前排了!

如果是小型游戏的话 可以自己找一个碰撞算法,然后对碰撞过的对象作标记,并且可以分帧来执行碰撞。根据需求来剔除一些无谓的碰撞,如果只是想优化的更流畅可以根据游戏类型 将碰撞范围做的粗糙一点,尽量用圆形或者矩形碰撞减少 多边形碰撞

哎, 这竟然是我19年发的贴子。。。。

1赞

我用云测试试了下,开启物理引擎,刚开始的时候关闭player移动,让所有刚体静止,但是云测试还是显示低端机性能、内存等不过关。

优化就是四叉树数据结构来做,但是你如果数量特别多的话也够呛