我想知道如何才能加快使用libgdx完成整个游戏的速度(例如,在单击按钮之后)。我在游戏中使用的方式是修改
world.step(TIMESTEP, VELOCITYITERATIONS, POSITIONITERATIONS);但我现在确定这是不是个好主意。有什么更好的方法来存档吗?
发布于 2013-12-31 07:30:32
当使用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那样琐碎,因为在现实/物理世界中,并不是所有的事情都是线性的)。
https://stackoverflow.com/questions/20848442
复制相似问题