我刚刚使用libgdx和box2d开发了我的Android垂直滚动游戏。 一切正常,直到我实现游戏状态的处理(暂停,恢复,运行,游戏结束)。我按照superjumper的例子,它的工作原理。这是我更新状态的代码:
@Override
public void update(float deltaTime) {
switch (state) {
case GAME_RUNNING:
assetsLoader.update(deltaTime, world);
world.step(deltaTime, 12,6);
updateRunning();
break;
case GAME_PAUSED:
world.step(0, 12, 6);
updatePaused();
break;
}
}
这里有我在render方法中调用的函数draw:
public void draw(){
switch (state) {
case GAME_RUNNING:
presentRunning();
break;
case GAME_PAUSED:
presentPaused();
break;
case GAME_OVER:
presentGameOver();
break;
}
}
现在的问题是,当我开始游戏时,我会尝试很多延迟(我的fps大约是59-61)和我的身体(我只有10个,他们以一个永不改变的线速度移动)开始口吃。我已经将恢复原状设置为0但没有任何改变,所以我认为问题是在切换状态内可能是因为它减慢了我的游戏性能,因为在我实现这部分之前我没有遇到这些问题。
是否有可能以另一种方式管理游戏状态?
答案 0 :(得分:0)
人们在使用Box2D时犯的一个常见错误是他们的每米像素比例太低了。 Box2D使用米而不是像素,因此您应该缩小Box2D内外的测量值。
如果没有,您还可以尝试每个周期降低Box2D更新(world.step(...)
中的12和6)。
如果仍然不起作用,请确保您没有呈现两次,但由于更新资产调用和presentRunning()
调用,这看起来可能是原因。
如果所有其他方法都失败了,请尝试if语句......