【问题标题】:LIBGDX speeding up a whole game (using box2d)LIBGDX 加速整个游戏(使用 box2d)
【发布时间】:2013-12-30 22:14:02
【问题描述】:

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

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

但我现在确定这是否是个好主意。有没有更好的存档方式?

【问题讨论】:

  • 这样做,你只会更新世界,如果你更新它更快,并不意味着它会更快。设置一个初始化为 1 的全局变量,并在您希望游戏加速的每个地方添加 *speed 。并用那个按钮增加这个值

标签: java libgdx box2d


【解决方案1】:

使用 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;
    }
}

这可确保您的 steptime 是恒定的,但它与渲染循环同步。您可以使用它并将其称为doPhysicsStep(deltaTime * speedup)(默认情况下加速为 1,按下按钮后可能为 1.5)。这可能会导致效果不佳,但您可以尝试一下。

否则,您可以像 cmets 中建议的那样采取艰难的方式,并通过修改代码中必要的每个地方来投入更多时间(所有力量都需要修改,在许多情况下,这并不像force * speedup,因为在现实/物理世界中,并非一切都是线性的)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-20
    相关资源
    最近更新 更多