3

Box2D の世界で次のように重力を追加すると誰もが言っているのを見ます。

b2Vec2 gravity = b2Vec2(0.0f, -10.0f);
bool doSleep = false;
world = new b2World(gravity, doSleep);

ただし、CCSprite からの userData を含む特定の b2Body にのみ重力が必要な場合はどうすればよいでしょうか? 私の知る限り、これは私が望まない世界のすべてに重力を適用するので、誰かがこの重力を特定のb2Bodyにのみ適用する方法を説明できますか?

ありがとう!

Edit1: この行を実行できますか?

_bottomBody->ApplyForce(gravity, _bottomBody->GetPosition());

world = new b2World... などの代わりに、その b2Body でのみ重力で動作しませんか?

4

1 に答える 1

4

フレームごとに特定の b2Body にフォース/インパルスを適用するだけです。重力をエミュレートします。

// a procedure called every frame
void Application::on_update_world(double t)
{
  m_body_with_custom_gravity->applyForce(CUSTOM_GRAVITY * m_body_with_custom_gravity->getMass());

  m_phys_world->Step(t, VEL_ITERATIONS, POS_ITERATIONS);
}

あなたに密接に関連する質問のスレッド: Box2D ボディに一定の力を適用する方法は?

于 2011-10-26T20:17:42.720 に答える