体は重力の影響で落下するので、加速度を持って落下するのは理にかなっています。
あなたの世界に重力があってはならない場合は、ゼロ重力ベクトルを設定し、体の線形速度を設定します。
b2Vec2 gravity(0.0f, 0f);
bool doSleep = false;
b2World* g_World = new b2World(gravity, doSleep);
b2Body* body;
<.. creating body ..>
body->setLinearVelocity(0, 10);
あなたの世界で重力が必要な場合は、b2BodyDef で重力スケールをゼロに設定します。
b2Vec2 gravity(0.0f, 9.8f);
bool doSleep = false;
b2World* g_World = new b2World(gravity, doSleep);
b2BodyDef bodyDef;
bodyDef.gravityScale = 0;
< .. set other body parameters ..>
b2Body* body;
<.. creating body ..>
body->setLinearVelocity(0, 10);
古いバージョンの Box2D を使用していて、b2BodyDef にそのようなフィールドがない場合は、次の 2 つの解決策があります。
上記のコードのように一度線形速度を設定し、各更新ステップで重力と反対の力を適用します。
// Update cycle
g_World->Step(elapsed, 7, 4);
body->ApplyForceToCenter(-gravity);
フィリップが言ったように、各更新ステップで線形速度を適用します。
// Update cycle
g_World->Step(elapsed, 7, 4);
body->ApplyLinearVelocity(0, 10);