2014-01-08 44 views
1

我使用下面的代碼來獲得不同半徑的兩個圓形物體之間的距離:在iOS的box2d中,如何找到兩個圓形物體之間的距離?

distance = b2Distance(body1->GetPosition(), body2->GetPosition()); 

我已經意識到,可變距離存儲體的兩個中心之間的距離,而不是之間的距離邊界。當兩個物體接觸時,我想要的是distance = 0。

我怎麼能這樣做?我一直在嘗試這段代碼,但它失敗了:

b2DistanceInput *distanceInput; 
distanceInput->transformA = body1->GetTransform(); 
distanceInput->transformB = body2->GetTransform(); 
b2DistanceProxy *proxyA; 
proxyA->Set(fixtureBody1->GetShape(), 1); 
b2DistanceProxy *proxyB; 
proxyB->Set(fixtureBody2->GetShape(), 1); 
distanceInput->proxyA = *proxyA; 
distanceInput->proxyB = *proxyB; 
b2DistanceOutput *theDistance; 
b2SimplexCache *cache; 
cache->count = 0; 
b2Distance(theDistance, cache, distanceInput); 

getShape方法在b2box代碼中給出了錯誤的訪問錯誤。

任何想法?

感謝,

GA

回答

0

嘗試使用此代碼 - 這對我的工作:

b2DistanceInput *distanceInput = new b2DistanceInput(); 
b2DistanceProxy *proxyA = new b2DistanceProxy(); 
b2DistanceProxy *proxyB = new b2DistanceProxy(); 
b2SimplexCache *cache = new b2SimplexCache(); 
b2DistanceOutput *theDistance = new b2DistanceOutput(); 

proxyA->Set(fixtureBody1->GetShape(),1); 
proxyB->Set(fixtureBody2->GetShape(),1); 

distanceInput->transformA = body1->GetTransform(); 
distanceInput->transformB = body2->GetTransform(); 
distanceInput->proxyA = *proxyA; 
distanceInput->proxyB = *proxyB; 
distanceInput->useRadii = true; 

cache->count = 0; 

b2Distance(theDistance, cache, distanceInput); 
+0

您的代碼工作的罰款。這個問題實際上是內存分配。因爲我沒有調用新的b2DistanceInput()和其他構造函數。 –

相關問題