其实前面已经说的很完善了,因为每帧update中需要执行的逻辑不同,可能这一帧基本每什么逻辑,而下一帧需要在update中执行很多node的创建或者其他的逻辑。这导致了每一帧需要的逻辑执行时间并不相同,可能这一帧执行完逻辑需要10ms,下一帧执行完就需要160ms。作为一个单线程的引擎,假设你这一帧执行逻辑需要160ms,而你需要固定update的dt(假如是16ms),那么在这一帧执行到第16ms的时候你就强制执行第二帧的逻辑,可数据是连续的,这样子第二帧在执行的时候使用的数据就有可能是不正确的数据。从而造成显示上的错误以及后续一系列的错误。
因此对于单机类游戏,不建议也最好不要去强制让每帧按照固定步长去执行。
你要做的是检查你自己的代码或者是通过一些工具,比如devTools去查看你的瓶颈在哪里?比如正常情况下都是低于16ms的,突然有一些帧高于16ms,比如你图片中某些帧耗时到了0.045s(就是是22fps),那这是为什么?是因为突然的内存飙升么?还是在这一帧做了大量的逻辑计算?等等。针对热点问题再进行优化。
类似 @番茄爱吃西红柿 这样论坛上面的热心群众,在没有你的完整代码时,只能提出一些方案或者方向给你去参考。
盲目的进行尝试并不能解决问题,需要找到问题的引发点,再进行针对性的处理,才能彻底解决。
补充一下前面所说的,使用dt*speed是一个很好的相机移动的方法。