iPhone의 Box2d에서 스프라이트의 위치를 가져 오는 데 필요한 몇 가지 샘플 코드를 도와주세요.iPhone의 Box2d에서 스프라이트의 위치를 얻는 방법
-1
A
답변
0
box2d bodyDef에서 스프라이트의 위치를 가져 오려면 먼저 bodyDef의 userData 속성에 스프라이트를 저장해야합니다.
예를 들어, 물리 환경에서 공을 생성하는 팩토리 메소드에서 다음과 같은 경우 충돌 감지를하고 그럼 당신은 예를 들어, 스프라이트의 위치를 액세스 할 때
//create the body
b2BodyDef initBodyDef;
initBodyDef.type = b2_dynamicBody;
initBodyDef.position.Set(p.x/PTM_RATIO, p.y/PTM_RATIO);
//Save the sprite in the userData property of the bodyDef, to access later
initBodyDef.userData = ballSprite;
b2Body *body = world->CreateBody(&initBodyDef);
//Rest of the factory method ............ (i.e. create shape, create fixture)
, 당신은 얻을 것이다 bodyDef의 userData 속성에있는 스프라이트에 대한 포인터 :
이것은 틱 (충돌 감지가 발생하는 곳)이거나 스프라이트의 위치를 가져와야하는 경우가 있습니다. 우리는 스프라이트 객체를 만들고 우리가 이전에 저장 스프라이트를 반환 우리 bodyDef,에있는 getUserData 메소드를 호출 위 코드의 첫 번째 줄에서
CCSprite *mySprite = (CCSprite *) bodyDef->GetUserData();
CGPoint spritePosition = mySprite.position;
. 반환 된 userData를 캐스팅해야하거나 오류가 반환됩니다. 스프라이트를 저장 한 후에는 mySprite 포인터에서 position 속성을 호출해야합니다. 그게 전부 야.