如何将delta帧速率应用于动态y动作

时间:2014-10-30 03:07:05

标签: lwjgl frame-rate

我最近在我的游戏中添加了delta。它适用于wasd运动而不是引力。我有两个重力变量。 yMotion(每次打勾改变y轴的动态运动)和重力(跌落的乘数)。 每次勾选yMotion按重力下降,然后y轴由yMotion改变。所以,如果我将yMotion设置为2,那么我会上升然后它会下降。

我的delta是帧速率的比率。所以如果我的渲染fps是60的基数而我的实际fps是30,那么我的delta是2.如果我的渲染fps是60而我的实际是120(不知何故)那么delta是0.5

我需要将我的delta帧速率添加到我的跳跃中,我无法获得任何工作。继承了我的基本重力/跌倒。

    yMotion -= gravity; //gravity doesnt ever change.

    if (!flying) { //if fly mode is on it skips this so the player doesnt go down
        vector.y += yMotion;
    }

继承人我跳的地方

    if (jump && !inAir) { //in air is if the player isnt colliding with an object and jump is if the user if pressing space
        yMotion = jumpingHeight*Game.delta; // Game.delta is the delta
    }

总结一下,我需要delta工作。谢谢!

1 个答案:

答案 0 :(得分:0)

通常你有一个你在恒定帧速率游戏中修改的速度矢量,你将这个速度乘以delta来得到位置的变化。

每一帧,Velocity.X and Y = WASD_Input;(常数,无增量乘法)和Velocity.Z += Gravity * Delta;以及最后Position += Velocity * Delta;

(注意:我使用Z作为上/下轴,因为它遵循3D模型的数学标准。)