2014-01-08 1 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() 및 다른 생성자를 호출하지 않았기 때문에. –