gpt4 book ai didi

java - 重力方程-速度方程|为什么它只适用于某些 FPS?

转载 作者:行者123 更新时间:2023-11-29 05:52:17 25 4
gpt4 key购买 nike

随着每秒更新量的下降,这些等式的跳转大小也会下降。将 delta 值乘以重力和跳跃速度力减少的量,以及每次迭代将耗时加上 delta(delta 值是自上次更新以来经过的毫秒数),人们会认为它可以正常工作。

//d is delta
...
if(isFalling||isJumping){

elapsedTime +=d;
//the elapsed time is the total amount of time passed since one started jumping,
//so that's logical to add the amount of time since last update.

long tesquared = (long) Math.pow(elapsedTime, 2);
//amount of time elapsed squared.

jumpSpeed+=-0.0000005*elapsedTime*d;
//this is the amount that jumpspeed is taken down by every time.

if(jumpSpeed > 0){
isJumping = true;
} else {
isJumping = false;
}
double fGravity = 0.0000001*tesquared*d;

// this is the equation for gravity, the amount that the player goes down

yRend += jumpSpeed - fGravity;
//the amount it goes up, minus the amount it goes down.
xRend -= strafeSpeed;
oldyRend = yRend;

}

要开始跳跃,可以增加任意数量的 jumpSpeed。

问题在于,当每秒更新量减少时,跳跃的持续时间和幅度都会减少。我相当确定这里的 delta 值很好,这意味着问题一定出在方程本身。

我认为当增量较大时,fGravity 会更快地超过 jumpSpeed

所以我的问题。如果问题确实出在方程式本身,那么除了

jumpSpeed+=-0.0000005*elapsedTime*d;

double fGravity = 0.0000001*tesquared*d;?

如果问题在于未正确应用增量值,那么应用它的正确方法是什么?

最佳答案

玩家没有“向上的力量”(除了在他们跳跃的那个点)。力传递动量,产生速度。一旦升到空中,它们就会感受到向下的力(即重力),这会导致它们减速,最终产生负速度,使它们返回地面。

如果玩家开始以 u 的速度向上跳跃,那么在跳跃开始后的 t 时间,计算位置的经典方程是 y = ut + 0.5 * at^2.

在这种情况下,a 是引力(如果 y 是“向上”,则为负),给出 y = u * t - 0.5 * g * t ^ 2

关于java - 重力方程-速度方程|为什么它只适用于某些 FPS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13435355/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com