Box2D对特定物体的重力?

时间:2011-10-24 03:23:18

标签: ios box2d gravity physics-engine

我看到每个人都说你在Box2D世界中加入了引力:

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

但问题是,如果我只想在包含来自CCSprite的userData的特定b2Body上引力? AFAIK这将把重力应用到我不想要的世界上所有的东西,那么有人可以向我解释我如何才能将这种引力仅应用于特定的b2Body?

谢谢!

EDIT1: 我可以这样做吗,

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

而不是世界=新的b2World ......等......仅仅在那个b2Body上重力不会起作用吗?

1 个答案:

答案 0 :(得分: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);
}

一个问题与你的问题密切相关的帖子: How to apply constant force on a Box2D body?