Как получить позицию спрайта в Box2d в iPhone - PullRequest
0 голосов
/ 23 марта 2011

Помогите мне с примером кода для получения позиции спрайта в Box2d в iPhone.

1 Ответ

0 голосов
/ 29 марта 2011

Чтобы получить позицию спрайта из bodyDef box2d, вы сначала должны сохранить свой спрайт в свойстве userData bodyDef.

Например, в фабричном методе, который создает шар в физикеenvironment:

    //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)

Затем, когда вы захотите получить доступ к позиции спрайта, например, при обнаружении столкновения, вы получите указатель на спрайт в свойстве userData bodyDef:

Это будет в методе тиков (где обнаружение столкновений), или где вам нужно получить позицию спрайта.

    CCSprite *mySprite = (CCSprite *) bodyDef->GetUserData();

    CGPoint spritePosition = mySprite.position;

В первой строке кода выше мы создаем объект спрайтаи вызовите метод GetUserData для нашего bodyDef, который возвращает спрайт, который мы сохранили ранее.Обратите внимание, что мы должны привести приведенные userData, иначе он вернет ошибку.Как только мы сохраним спрайт, все, что нам нужно сделать, - это вызвать свойство position нашего указателя mySprite.Вот и все.

...