linearVelocity 在不同帧数下表现不同,如何解决?

帧数越高,运动越快,而且位移的距离也不等于速度乘以deltaTime
版本 3.7.3 和3.8.0 都有问题
在123行打印了x坐标,横向速度和deltaTime。


60fps下

10fps下

看到其他帖子有人说位移距离还要乘以32,重新打印了一下。


60fps
image
10fps

由上面两个截图可见,60帧的时候数据基本吻合,10帧的时候位移的距离严重不对,
不管多少帧,两次的距离差值都是5左右,似乎位移距离是按帧运动的而不是按时间。

是的因为postupdate和帧率有关可以在设置里关了自动更新物理,你自己手动更新物理步长

试过没有自动更新流畅

也就是说引擎本身的实现就错了?
有什么办法把这个问题报告给官方吗?

每次物理模拟消耗的时间都是固定的跟帧数无关

不同帧数下,相同速度,走相同距离需要的时间都不同
image

我也遇到这个问题了,请问楼主有找到解决办法了吗

void update(float delta){
static float totaltime += delta;
const float steptime = 0.02f;
int stepcount = totaltime/steptime;
for(int i=stepcount;i>0;i—)
{
fixedupdate(steptime);
totaltime -= steptime;
}
}
物理引擎的代码应该这样写

这代码看起来似乎是java或者c#吧,现在的cocos似乎只支持typescript。

没有,很明显是引擎的问题,但是官方似乎看不见。

之前研究过rapier.js的物理引擎, ta的delta time是固定在初始化时就要设定
每次step的delta time都是固定的, 所认有可能不是官方不改, 而是第三方的物理引擎就是这様设定

我也遇到这个问题了,想问楼主,有什么办法解决吗?

没有,不知道为啥这么明显而且重要的bug,cocos官方会无视这么多版本。