Slick2D - 每台计算机上的运动相同

时间:2014-06-29 08:06:57

标签: time slick2d

我正在和朋友一起编写游戏,但我们遇到的问题是在不同的PC上获得同样的动作。在Slick2D中,我们使用Delta来进行移动:

    if (input key up)
    {
        sprite = up; // changing the sprite
        if (no collision){
            sprite.update(delta*3); //animation
            y -= delta * 0.3f; // movement
        }
    }

问题在于delta是两帧之间的时间。而这次因为性能而在每台电脑上都不尽相同。所以计算机越慢,运动就越慢。

如何解决这个问题?

感谢您帮助我们,我希望您理解我的英语!

1 个答案:

答案 0 :(得分:0)

如何为您的应用设置目标帧速率?它可以规范所有计算机的移动速度(假设计算机可以达到该速率)。因此,每当您第一次实例化您的游戏类时,请执行以下操作:

private static final int TARGET_FRAME_RATE = 60;
private static final int WINDOW_WIDTH = 640;
private static final int WINDOW_HEIGHT = 480;

public static void main(String[] args) {
    try {
        AppGameContainer appgc = new AppGameContainer(new MyGame());
        appgc.setDisplayMode(WINDOW_WIDTH, WINDOW_HEIGHT, false);

        // Set the target framerate for the appgc
        appgc.setTargetFrameRate(TARGET_FRAME_RATE);

        appgc.start();
    } catch (SlickException e) {
        System.err.println("There was an error executing the game...");
        e.printStackTrace();     
    }
}