我想知道如何使用libgdx加快整个游戏的速度(例如点击按钮后)。我在游戏中的方式是修改
中使用的时间步变量world.step(TIMESTEP, VELOCITYITERATIONS, POSITIONITERATIONS);
但我现在确定这是不是一个好主意。如果有更好的存档方式吗?
答案 0 :(得分:4)
使用Box2D时,您可以通过修改物理步骤来加快游戏速度。一个问题是你应该使用一个恒定的步进时间。我在游戏中使用以下代码:
private float accumulator = 0;
private void doPhysicsStep(float deltaTime) {
// fixed time step
// max frame time to avoid spiral of death (on slow devices)
float frameTime = Math.min(deltaTime, 0.25f);
accumulator += frameTime;
while (accumulator >= Constants.TIME_STEP) {
WorldManager.world.step(Constants.TIME_STEP, Constants.VELOCITY_ITERATIONS, Constants.POSITION_ITERATIONS);
accumulator -= Constants.TIME_STEP;
}
}
这可以确保您的步进时间是恒定的,但它与渲染循环同步。您可以使用它并将其称为doPhysicsStep(deltaTime * speedup)
(默认情况下加速比为1,按下按钮后可能为1.5)。这可能会导致效果不理想,但您可以尝试一下。
否则你可以像评论中建议的那样努力工作,并通过修改代码中必要的每个地方来投入更多时间(所有力量都需要修改,在许多情况下并不像以下那样微不足道force * speedup
,因为在真实/物理世界中,并非一切都是线性的。)