0

在我的“Bricks Breaker”游戏中,我将冲动 b2Vec2(2,15) 传递给 b2Body(球)。这时候body就到了屏幕上边界的尽头,但是速度太快,用户无法正常播放。如果我将脉冲作为 b2Vec2(8,8),球的速度会降低,但球不会到达顶部的尽头。

我只是想我应该如何减慢球的速度,并且它也应该到达顶部边界?

下面是代码:

 b2Vec2 force = b2Vec2(3,15);
 b2Vec2 pos = ballBody->GetPosition();
 ballBody->ApplyLinearImpulse(force, b2Vec2(pos));
4

1 回答 1

1
x(t) = x0 + v.x * t; (1)
y(t) = y0 + v.y * t - g * t * t; (2)

如果您需要 y(t) 大于 h - 求解(2) >= h以找到初始垂直速度 vy

更简单的方法:

max_h = (v.y * v.y) / (2 * g)

你现在可以找到最小的v.y了。

于 2012-07-02T13:29:32.993 回答