逼真跳跃算法

时间:2012-08-27 05:44:17

标签: xcode physics

我希望我的角色根据按下跳跃按钮的时间跳转。当按下跳跃按钮时,我已经尝试添加到精灵的y位置。但是它没有给跳跃带来逼真的感觉。我的增量太恒定了。如何使y的增量在到达跳跃顶部时减小?

3 个答案:

答案 0 :(得分:1)

我会使用正弦函数来计算给定时间的高度。它具有您想要的大致形状,以提供“逼真”的感觉,并且它可以作为各种语言库中的库函数。

除非如果玩家跳下悬崖,否则这不起作用,因为正弦函数开始转向并且一旦它低于起始高度就转向另一个方向。

所以,要么你使用混合方法,你可以在那里改变,或者你使用更逼真的物理,即当玩家离开地面时向下加速开始。在后一种情况下,您必须弄清楚按住按钮会发生什么。

对于可玩性,使用正弦可能实际上是有利的,然后说在玩家返回原始高度的时间点,加速停止并且速度从那里开始保持不变。

答案 1 :(得分:1)

我认为有几种方法可以实现这个目标:

  1. 想象一下,你的角色有一个带有限量燃料的喷气背包'。然后,加速度与剩余燃料成反比,因此他以高加速度开始并减速直到包装耗尽“燃料”。或者用户释放跳转按钮。此时加速度应恢复为重力(负值),角色开始下降。 (有了这个故事,至少,当按住跳跃按钮时,用户继续上升是有意义的。)
  2. 使用具有递减(但正)斜率的非线性函数将跳跃的持续时间映射到y值,例如,正弦函数,对数函数或平方根。这是(1)的更一般情况。

答案 2 :(得分:0)

想象一下,跳跃按钮可以让玩家角色充满能量。 (在现实世界中,你可以弯曲膝盖向上跳跃,有效地将更多能量带入跳跃中)。

某个高度的能量由公式E = m g h确定,其中m是移动物体的质量,g是重力常数,h是实现的高度。 请注意"启动"你需要获得一定速度的速度取决于你在该速度下的动能:E = m v²/2,导致h = v²/(2g)为二次方程式。

因此,我建议尝试二次(有界,你不希望人们跳到不可能的高度)或跳跃高度h随时间的线性增长。