微信小游戏物理开启固定步长后,物体运动会发生明显的抖动

微信小游戏物理开启固定步长
let manager = cc.director.getPhysicsManager();
manager.enabled = true;
manager.enabledAccumulator = true;
manager.FIXED_TIME_STEP = 1/30;
manager.VELOCITY_ITERATIONS = 8;
manager.POSITION_ITERATIONS = 8;
当对一个物体,例如子弹,只添加cc.PhysicsCircleCollider,并且给他一个力,使子弹抛物运动时,子弹在运动过程中会发生明显的抖动。如果不开启enabledAccumulator ,则一切正常,子弹不会抖动。
请问这种情况有没有什么办法处理?主要是因为我们的游戏运动的刚体比较多,不开启固定步长的话,物理更新太快,性能上会成为瓶颈。

@jare

我什么都没设置 一样抖动

之前好像遇到过类似的问题 最后查到好像是因为我用了摄像机跟随了物体的移动 而摄像机位置的更新频率和物体位置的更新频率不一致导致的 最后让摄像机监听物体的位置改变在更新位置就不抖了

1赞

不是同一个问题

@wpunity 这个问题官方没有回复吗?我也发现使用enabledAccumulator=true,刚体就是会抖动,怎么做都不行

这个问题其实也不是靠官方就能解决的。我们最近的项目在用unity的时候也出现了抖动的情况,update、lateupdate、fixupdate,插值都试过了,只是明显程度的差异,因此想要解决还是得从逻辑层去想办法了。目前这方面我们的项目也是在尝试找出解决办法。

开启固定步长 enabledAccumulator = true 后,导致刚体抖动的主要原因是:有时候在同一帧里会执行多次PhysicsManager.update(),看了引擎代码,发现下面这句代码改一下合理些,


然后把 enabledAccumulator = true 去掉,抖动效果也会好很多,也能实现不同帧率下移动距离一致