Назначение текстур на объекте Box2D - PullRequest
1 голос
/ 27 февраля 2012

Я недавно начал работать с box2d, и в настоящее время у меня проблема с рисованием box2d.Прямо сейчас мои прямоугольники нарисованы только с граничными линиями.Но я хочу нарисовать текстуры в том месте, где есть бокс.

Хотя я не уверен, правильно ли назначать текстуру для box2d или рисовать текстуру, используя Sprite поверх блока.

Есть ли способ назначить текстуру для box2d?или другой способ рендеринга текстур при использовании box2d?

Ответы [ 2 ]

0 голосов
/ 04 апреля 2012

Вы должны найти фактическое положение тела например, в методе рендеринга вы реализуете следующие вещи, чтобы найти положение тела и прикрепить к нему текстуру.

ballPosition = ballBody.getPosition();

и применить положение к текстуре, нарисованной на экране

0 голосов
/ 28 февраля 2012

Я использовал два основных подхода:

  1. В классе GameManager / GameWorld реализуйте метод update / tick, который вызывается в каждом кадре.После вызова world->Step(delta, 10, 10); пройдитесь по всем телам в мире и обновите их позицию Спрайтов.Обратите внимание, что при создании тел многие будут использовать элемент body.userData для хранения указателя на спрайт, «прикрепленный» к этому телу.

    for(b2Body *b = _world->GetBodyList(); b; b=b->GetNext()) 
    {
      if (b->GetUserData() != NULL) {
        CCSprite *spriteData = (CCSprite *)b->GetUserData();
        spriteData.position = ccp(b->GetPosition().x * PTM_RATIO,b->GetPosition().y * PTM_RATIO);
        spriteData.rotation = -1 * CC_RADIANS_TO_DEGREES(b->GetAngle());
      }
    }
    
  2. Скажем, что у вас есть объекту этого есть класс, названный игроком.Вы можете реализовать метод tick / update в этом классе, который обновляет свой собственный спрайт с позицией тела ... например:

    [self setPosition:ccp(body->GetPosition().x * PTM_RATIO, body->GetPosition().y * PTM_RATIO)];
    

Вам понадобится указательк b2_body и добавьте этот экземпляр в CCLayer, где реализовано основное обновление / галочка / шаг.

...