使用libgdx和box2d

时间:2015-09-06 09:01:14

标签: java android libgdx box2d

我刚刚使用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但没有任何改变,所以我认为问题是在切换状态内可能是因为它减慢了我的游戏性能,因为在我实现这部分之前我没有遇到这些问题。

是否有可能以另一种方式管理游戏状态?

1 个答案:

答案 0 :(得分:0)

人们在使用Box2D时犯的一个常见错误是他们的每米像素比例太低了。 Box2D使用米而不是像素,因此您应该缩小Box2D内外的测量值。

如果没有,您还可以尝试每个周期降低Box2D更新(world.step(...)中的12和6)。

如果仍然不起作用,请确保您没有呈现两次,但由于更新资产调用和presentRunning()调用,这看起来可能是原因。

如果所有其他方法都失败了,请尝试if语句......