更具体地说,我想将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 = 0
和t2 = 2*vy/a
。因此,跳转的时间范围是
[0, 2*vy/a]
。