我最近在我的游戏中添加了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工作。谢谢!
答案 0 :(得分:0)
通常你有一个你在恒定帧速率游戏中修改的速度矢量,你将这个速度乘以delta来得到位置的变化。
每一帧,Velocity.X and Y = WASD_Input;
(常数,无增量乘法)和Velocity.Z += Gravity * Delta;
以及最后Position += Velocity * Delta;
。
(注意:我使用Z作为上/下轴,因为它遵循3D模型的数学标准。)