更具体地说,我想将Coin设置为玩家可以一次跳跃即可收集所有硬币的模式。我用颜料画了一幅小图(黄色圆圈=硬币)来说明我的意思:


我可以使用某种“技巧”吗?我找到了我需要的方程,但它们都需要飞行时间(我的跳跃方法根本没有使用时间)

最佳答案

要计算跳跃运动员角色的确切轨迹,您需要简单的物理原理。我不确切知道您有什么起始参数,但是最有可能您知道播放器跳下来时的水平和垂直速度(速度)以及“重力”的大小作为垂直加速度:

Horizontal velocity:   vx [pixels per second]
Vertical veloctiy:     vy [pixels per second]
Gravity:               a [pixels per second^2]


玩家的位置随时间变化,可以通过两个功能x(t)y(t)定义。由于我们只想查看跳跃运动,因此在跳跃开始时将t设置为零。

幸运的是,这两个功能是完全独立的。水平运动是线性的:

x(t) = vx*t


垂直运动由于受到重力的影响而更加复杂:

y(t) = vy*t - (a/2)*t^2 = t*(vy - t*a/2)


快完成了我们唯一需要确定的是跳跃的时间范围。所以问题是:玩家什么时候再次降落在地板上?或者换句话说:y(t)何时为零?

很容易看到y(t)有两个根:t1 = 0t2 = 2*vy/a

因此,跳转的时间范围是[0, 2*vy/a]

09-26 04:08