2012-04-18 63 views
5

我一個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

回答

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

我希望這清楚是怎麼回事。如果沒有,只要問:)

+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

相關問題