物理系统在小米120HZ的机型上会加速,导致同样的玩法和线路,在小米120HZ机型上不能正常的体现玩法,各种重力和力度设置都很异常,比如,一个刚体同样的力度,在正常的机型上能够正常到达目的地,但在120hz机型上就会提前掉落。
我尝试cc.game.setFrameRate(61);锁定帧率为59、60、61,都无法改变,请问是我锁定帧率的方法不对还是其他原因?这种问题有办法解决吗?因为目前小米很多机型都是默认的120hz的刷新率。拜求大神指点。
enabledAccumulator
FIXED_TIME_STEP
我就说这么多,善用搜索,孩子。
感谢,发完贴就看到了类似的帖子了,你的头像很好看。
多年前的帖子被挖出来了。
那我回一下:
锁定帧率确实是可以解决问题,
不过,
在按帧处理物体的移动时,即使仅考虑最简单的速度乘以时间。
也必须计算delta time(需要知道两帧之间经过了多少时间)
而我当年在做那东西的时候,没有计算dt ,
那自然就出问题了。
另外,
如果既利用了物理引擎的加速度,又不考虑dt,还是会出问题
如果既利用了物理引擎的冲量,又不考虑dt,还是会出问题
一句话,
不考虑dt是不行的
目前我也遇到这个问题了,我在update当中做旋转的时候,用的旋转速度*dt,在120HZ的机型上,旋转速度明显慢了一半,在60HZ的机型上,就比较正常。请问大兄弟,这个问题你是如何解决的呢?如何处理这个dt?
只是简单的旋转吗?
那么,
思路是这样的:
首先dt是两帧之间的间隔,而不是“从第一帧到现在的时间”。
官方手册里面的第一个例子里有一句:
this._curJumpTime += deltaTime;
这一句就是用来计算累计时间的。
具体到你的例子中,
60hz时,两帧之间的间隔时间是 a ,所以速度正常,
120hz的情况下,两帧之间的间隔时间是 a/2 ,所以你速度就慢了一半。
所以你知道该怎么做了吧。
提醒一下,
在简单的业务中可以这样处理,
但是比较复杂的业务,比如导弹,比如赛车……就要考虑补帧什么的。
强行累加到1/60后再旋转吗?
类似这样:
this.step=1/60;
this.currentStep+=dt;
if(this.currentStep>=this.step){
let rotateAngle=180*this.currentStep;
console.log(“旋转角度:”,rotateAngle);
this.currentStep=this.currentStep-this.step;
}
该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。