LIBGDX加速整场比赛(使用box2d)

时间:2013-12-30 22:14:02

标签: java libgdx box2d

我想知道如何使用libgdx加快整个游戏的速度(例如点击按钮后)。我在游戏中的方式是修改

中使用的时间步变量
world.step(TIMESTEP, VELOCITYITERATIONS, POSITIONITERATIONS);

但我现在确定这是不是一个好主意。如果有更好的存档方式吗?

1 个答案:

答案 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,因为在真实/物理世界中,并非一切都是线性的。)