2011-03-23 2 views

답변

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 속성을 호출해야합니다. 그게 전부 야.