請參閱視頻在執行Hookes法則/彈性繩索的幫助不大?
http://www.youtube.com/watch?v=_DyzwZJaDfM
的「棕色」體控制與鼠標按下鼠標時我計算利用胡克定律(吹罰至http://www.box2d.org/forum/viewtopic.php?f=4&t=116)力和「藍」車身應該引起到「棕色」身體。
但是,如視頻所示,「藍色」身體不停地繞着軌道運行,而不是停止。我想實現的是「彈性繩索」就像東西。 首先我嘗試使用DistanceJoint,但是我無法給關節提供一個靜態距離。
這裏是我實施胡克定律 -
-(void)applyHookesLaw:(b2Body*)bodyA:(b2Body*)bodyB:(float) k:(float) friction:(float)desiredDist
{
b2Vec2 pA=bodyA->GetPosition();
b2Vec2 pB=bodyB->GetPosition();
b2Vec2 diff=pB- pA;
b2Vec2 vA=bodyA->GetLinearVelocity();
b2Vec2 vB=bodyB->GetLinearVelocity();
b2Vec2 vdiff=vB-vA;
float dx=diff.Normalize();
float vrel=vdiff.x * diff.x + vdiff.y * diff.y;
float forceMag= -k*(dx-desiredDist);//-friction*vrel;
diff*=forceMag;
bodyA->ApplyForce(-1*diff,bodyB->GetPosition());
//bodyA->wakeUp()
}
任何提示嗎?
PS - 世界比重爲0.0
你希望兩個機構完成了相互接觸?如何做你已經有的東西,再加上兩個身體之間的弱小鼠關節? – iforce2d
哦,它沒有發生在我之前..謝謝小費! –
您也可以添加一些摩擦,如空氣阻力。根據能量守恆,你看到的行爲是正確的。 – Beta