2013-08-24 3 views
0

내 게임에서 사용자가 무언가를 한 후에 본체가 무작위로 화면에 재배치됩니다. 그러나, 물체가 다른 몸체의 위에 재배치되면, 양쪽 모두가 약간 밀어 넣어집니다 (방을 만들기 위해!). 위치를 자유 (어쨌든 특정 지름 이내) 경우에만 재배치가 수행되도록 임의로 생성 된 좌표의 위치를 ​​먼저 확인하고 싶습니다.Box2d - 특정 위치에 시체가 있는지 확인하는 방법이 있습니까?

같은 것. location.hasBody(). 분명히 내가 찾지 못한이 기능이 있어야합니다. 감사!

답변

1

이 점과 세계를 조회하고 몸을 얻을 수있는 방법은 없지만, 당신이 할 수있는 일은 작은 상자와 함께 세계를 조회 할 수 있습니다 : 원래는 여기에 게시

// Make a small box. 
b2AABB aabb; 
b2Vec2 d; 
d.Set(0.001f, 0.001f); 
aabb.lowerBound = p - d; 
aabb.upperBound = p + d; 

// Query the world for overlapping shapes. 
QueryCallback callback(p); 
m_world->QueryAABB(&callback, aabb); 

if (callback.m_fixture) 
{ 
    //it had found a fixture at that position 
} 

솔루션 : Cocos2d-iphone forum

+0

나는 너를 너무 사랑해. –

0

box2d에 '깨끗한'방법이 포함되어 있는지 확실하지 않습니다. 전 세계의 모든 몸체를 새로 추가하기 직전에 수동으로 반복하고, manually의 위치 + 라디오/크기가 새 몸체 모양과 겹치지 않았는지 확인합니다.

-1

시도

b2Vec2 vec = body->GetPosition(); // in meters 

또는

CGPoint pos = ccp(body->GetPosition().x * PTM_RATIO, body->GetPosition().y * PTM_RATIO); // in pixels 
관련 문제