0

私の「Bricks Breaker」ゲームでは、インパルス b2Vec2(2,15) を b2Body (ボール) に与えています。このとき本体は画面の上限まで到達するが、速度が速すぎてまともにプレイできない。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 に答える