我怎样才能让一个冲动,使b点从点A的Box2D/cocos2diphone

问题描述:

我一个Box2D的对象上应用的冲动像这样的东西移开:我怎样才能让一个冲动,使b点从点A的Box2D/cocos2diphone

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

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

如果我有物体a,b和c-并且物体a位于b和c的中点,如何创建Box2D冲动使物体b和c从速度v移开?

scientific diagram drawn with great skill and focused intent

+0

+1:爱猫。 – RBarryYoung 2012-04-18 03:19:11

+0

谢谢。如果编程不起作用,我会进入美术。 – glenstorey 2012-04-18 03:34:04

尝试使用这样的:

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()); 

我希望这清楚是怎么回事。如果没有,只要问:)

+0

作品致谢!我确实在第2行出现了一个错误“成员引用b2Vec2不是指针”,但如果我把它看出来,事情似乎很好,这个错误是什么意思? – glenstorey 2012-04-18 08:06:45

+0

这假设B和C在A的完全相反侧。如果不是,你只需要重复C的前三行以得到impulseC。 – iforce2d 2012-04-18 08:15:56

+0

固定线2 - 它应该是一个点而不是' - >'。 @ iforce2d - 问题说对象a在中间。 – jrtc27 2012-04-18 09:28:36