如何沿特定轨迹放置物体?

时间:2015-03-11 19:28:09

标签: java android libgdx 2d physics

更具体地说,我想将Coin置于这样的模式中,即玩家可以在一次跳跃中收集所有硬币。我在油漆(黄色圆圈=硬币)中画了一张小图片来证明我的意思: enter image description here

有没有任何'技巧'我可以用?我找到了我需要的方程式,但它们都需要飞行时间(时间不用于我的跳跃方法)

1 个答案:

答案 0 :(得分:1)

要计算跳跃运动员角色的确切轨迹,您需要简单的物理学。我不确切知道你有什么开始参数,但很可能你知道你的玩家跳跃时的水平和垂直速度(速度)以及" gravity"作为垂直加速度:

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]