我看到每个人都说你在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上重力不会起作用吗?
答案 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?