Как мне включить / получить / установить положение тела в структуре UserData? - PullRequest
1 голос
/ 23 февраля 2012

Мне удалось создать структуру для UserData, но когда я переключаюсь с использования

ballBodyDef.userData = _ball;

до

MyBodyData *bodyData = new MyBodyData();
bodyData->someNumber = 4;
bodyData->sprite = _ball;
_body->SetUserData(bodyData);

следующие ошибки:

for(b2Body *b = world->GetBodyList(); b; b=b->GetNext()) {    
    {
        if (b->GetUserData() != NULL)
        {
            CCSprite *myActor = (CCSprite*)b->GetUserData();
            myActor.position = CGPointMake(
                                           b->GetPosition().x * PTM_RATIO,
                                           b->GetPosition().y * PTM_RATIO );
            myActor.rotation = -1 * CC_RADIANS_TO_DEGREES(b->GetAngle());
        }
    }

Я уверен, что это связано с тем фактом, что компилятор не может найти / установить положение myActor, но я не знаю, как включить / получить / установить положение тела, используя структуру ...

1 Ответ

1 голос
/ 23 февраля 2012
 CCSprite *myActor = (CCSprite*)b->GetUserData();

Вы не можете разыграть MyBodyData* до CCSprite*.Вы должны написать:

if (b->GetUserData() != NULL)
{
    MyBodyData *data = static_cast<MyBodyData*>(b->GetUserData());
    //then retrive any info you need from data
}
...