长话短说,我正在制作一个平台游戏。我还没到学过微积分的年纪,所以我不知道导数或积分,但我知道它们。理想的行为是当我的角色两侧有一个高于他站立的那个的块时,我的角色会自动跳跃;例如,楼梯。这样玩家就可以按住左/右爬楼梯,而不必再发送跳跃键。
问题在于我实现跳跃的方式。我决定采用马里奥风格,并允许玩家保持“跳跃”更长的时间以跳得更高。为此,我将一个“跳跃”变量添加到玩家的 Y 速度中。跳跃变量在按下“跳跃”键时增加到设定值,一旦松开“跳跃”键,跳跃变量会迅速减小,但只要按住“跳跃”键,跳跃变量减小的速度较慢,从而提供持续加速只要您按住“跳跃”,就会向上。这也使得一个漂亮的,流畅的跳跃,而不是视觉上不和谐的,突然的加速。
因此,为了考虑可变楼梯高度,我希望能够准确计算“跳跃”变量应该获得什么值才能准确地跳到楼梯的高度;最好不多也不少,不过稍微多一点也是允许的。这样,角色可以跳上陡峭或浅浅的楼梯,而不会显得奇怪或缓慢。
基本上有5个变量在起作用:
h -the height the character needs to jump to reach the stair top<br>
j -the jump acceleration variable<br>
v -the vertical velocity of the character<br>
p -the vertical position of the character<br>
d -initial vertical position of the player minus final position<br>
Each timestep:<br>
j -= 1.5; //the jump variable's deceleration<br>
v -= j; //the jump value's influence on vertical speed<br>
v *= 0.95; //friction on the vertical speed<br>
v += 1; //gravity<br>
p += v; //add the vertical speed to the vertical position<br>
v-initial is known to be zero<br>
v-final is known to be zero<br>
p-initial is known<br>
p-final is known<br>
d is known to be p-initial minus p-final<br>
j-final is known to be zero<br>
j-initial is unknown<br>
考虑到所有这些事实,我怎样才能得出一个求解 j 的方程?
tl;博士我如何微积分?
非常感谢任何能够做到这一点并决定解决这个问题的人。
编辑:这是我在 Excel 中制作的示例图。
我想要一个方程,它可以让我在给定 B 的期望值的情况下找到 A 的值。由于跳跃变量随着时间的推移而减小,因此位置值不仅仅是一个简单的抛物线。