5

我在 box2d 对象上施加一个脉冲,如下所示:

b2Vec2 impulse = b2Vec2(4.0f, 15.0f);
body->ApplyLinearImpulse(impulse, body->GetWorldCenter());  

我知道这可能是高中数学,我保证我已经努力为自己发现这一点;请原谅我的无知。

如果我有对象 a、b 和 c - 并且对象 a 位于 b 和 c 的中点,我如何创建一个 Box2D 脉冲,以便对象 b 和 c 以速度 v 远离 a?

以高超的技巧和专注的意图绘制的科学图表

4

1 回答 1

3

尝试使用这个:

b2Vec2 impulseB = bodyB->GetPosition() - bodyA->GetPosition();
impulseB /= impulseB.Length();
impulseB *= predefinedScaleValue; // predefinedScaleValue is your velocity
b2Vec2 impulseC = -impulseB;
bodyB->ApplyLinearImpulse(impulseB, bodyB->GetWorldCenter());
bodyC->ApplyLinearImpulse(impulseC, bodyC->GetWorldCenter());

我希望很清楚这里发生了什么。如果没有,请问:)

于 2012-04-18T07:15:15.247 回答