动画速度取决于FPS

时间:2016-10-18 21:23:13

标签: java animation lwjgl

我制作一个简单的游戏并且我想要将角色的动画/移动链接到帧之间的时间,以便在一秒钟内角色移动相同的距离,无论FPS是什么。这是我必须尝试这样做的代码。

public void getVels()
{
    if (isAirbourne && accely < terminalVel)
    {
        accely += gravity;
    }

    vely = accely;
    vely = vely * getFrameTime();

    System.out.println(getFrameRate() + "  " + getFrameTime() + "  " + vely);
}

public static long getTime()
{
    return Sys.getTime() * 1000 / Sys.getTimerResolution();
}

public static float getTimeSinceLast()
{
    if (first)
    {
        currentFrame = getTime();
        first = false;
        timeSinceLast = 1;
    }

    else
    {
        lastFrame = currentFrame;
        currentFrame = getTime();
        timeSinceLast = currentFrame - lastFrame;
    }

    return timeSinceLast;
}

public static float getFrameTime()
{
    return timeSinceLast * multiplier;
}

public static void updateClock()
{
    getTimeSinceLast();
}
然而,与10FPS相比,游戏仍然以100FPS快速运行10倍,尽管它不应该。任何帮助/提示?

在1000 fps的getframetime时间为0.01, 如果accely = 1,则vely * getframetime将为0.01。

at 100fps getframetime是0.1,所以加上1,vely * getframetime应该是0.1

在fx小10倍时比0.01大10倍,所以每秒行进的距离应该相同吗?

解决方案:

if (isAirbourne && accely < terminalVel)
{
    accely += gravity * getFrameTime;
}

而不是

if (isAirbourne && accely < terminalVel)
{
    accely += gravity;
}

没有调整重力加速度。

0 个答案:

没有答案