Box2D Gravity to specific object?
我看到每个人都说你在 Box2D 世界中像这样添加重力:
1 2 3 | b2Vec2 gravity = b2Vec2(0.0f, -10.0f); bool doSleep = false; world = new b2World(gravity, doSleep); |
问题是,如果我只想要包含来自 CCSprite 的 userData 的特定 b2Body 上的重力怎么办? AFAIK 这会将重力应用于我不想要的世界上的一切,所以有人可以向我解释如何将这种重力仅应用于特定的 b2Body?
谢谢!
编辑1:
我可以做这行吗,
1 | _bottomBody->ApplyForce(gravity, _bottomBody->GetPosition()); |
而不是世界 = 新的 b2World... 等等... 难道不是只在那个 b2Body 上使用重力吗?
只需在每一帧对特定的 b2Body 施加一个力/脉冲。它将模拟重力。
1 2 3 4 5 6 7 | // 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 主体上施加恒定力?