Zan*_*ger 7 math variables calculus
长话短说,我正在做一个平台游戏.我还不够大,已经拿走了微积分,所以我不知道衍生物或积分,但我知道它们.期望的行为是让我的角色在他身边的一个阻挡位于他所站立的位置之上时自动跳跃; 例如,楼梯.通过这种方式,玩家可以向左/向右爬楼梯,而不必向跳跃键发送垃圾邮件.
问题在于我实施跳跃的方式; 我决定采用马里奥风格,让玩家更长时间地"跳跃"跳得更高.为此,我有一个"跳跃"变量,它被添加到玩家的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>
Run Code Online (Sandbox Code Playgroud)
鉴于所有这些事实,我如何制定一个解决j的方程式?
tl; dr我如何微积分?
非常感谢任何人做到这一点,并决定解决这个问题.
编辑:这是我用Excel中的一个例子制作的图表.

我想要一个等式,让我找到A给定B值的值.由于跳跃变量随时间减小,位置值不仅仅是一个简单的抛物线.
这里有两个难点。第一个是你实际上没有j -= 1.5,你有j = max(0, j - 1.5)。这给计算带来了一些麻烦。此外,摩擦项v *= 0.95使直接求解变得困难。
我建议为此使用查找表。您可以通过反复试验来预先计算a每种可能的所需值(例如,对 的值进行二分搜索,从而获得所需的值)。将结果存储在表中,并在游戏过程中进行简单的表查找。bab
| 归档时间: |
|
| 查看次数: |
338 次 |
| 最近记录: |