假设一个很简单的场景。我让一个小人恒定的向前跑的速度。比如说10m/s。使用setLinearVelocity(0,0,10)这个函数。
然后我发现在有些低端机器上。因为不能达到60帧。只能跑到30帧,这个就导致了小人跑步速度慢了一半。变成了5m/s。
通过观察物理引擎的工作原理。我发现,因为物理引擎的设置里fixedTimeStep设置的默认为0.016秒。所以如果说每秒60帧的话。每帧迭代一次,迭代时间为0.016秒,正好和实际时间是相符的。
但是如果每秒只有30帧的话,没帧只迭代一次。则实际的一秒钟在物理引擎系统里只迭代了0.5秒。就导致了,帧率越低,物理引擎越缓慢。
这个很蛋疼啊。于是我尝试如下代码
update(deltaTime: number) {
//不能这样子干,会抖动
// PhysicsSystem.instance.fixedTimeStep = deltaTime;
}
因为delatTime的不稳定,会导致物理行为直接抖动。更加蛋疼。
这个东西后续有想过怎么去搞定吗?


四年了,这个帖子还有人挖坟。我作为过来人直接告诉你结论好了,Cocos的物理系统非常不稳定,建议不要想着用这个引擎做物理游戏。