如何在不改变delta时间的情况下在LibGDX中加速世界



这不是这个问题的重复,因为我需要一种在不改变deltaTime的情况下加快世界速度的方法,让一切都更快地发生。为什么我不能使用deltaTime或更改它?我使用速度-维莱特积分来模拟轨道力学,deltaTime要求尽可能低,以提高精度。因此,我将其设置为Gdx.graphics.getDeltaTime() * 0.001f。我在Java中使用LibGDX,如果有必要,我会使用Game类来构建屏幕。

我试过什么或想到了什么

使用更高阶的症状积分器将不需要更小的deltaTime,但很难实现,如果这不可能的话,这是我的B计划。

您所说的不重复的问题实际上很可能是您的解决方案。

你的目标是有Gdx.graphics.getDeltaTime() * 0.001f的小时间步长。当我们使用60fps的帧速率时,它可以被写为1f / 60f * 0.001f。因此,您当前的时间步长大约是0.000017。这是要用于Constants.TIME_STEP的值。

然后,您只需要将WorldManager.world.step替换为对物理函数的调用。作为参数传递的delta时间将是Constants.TIME_STEP

但由于你的时间步长很小,会有大量的物理函数调用,这意味着它必须很快,否则你无论如何都必须找到减少时间步长的方法。

最新更新