Спрайт и его тело не действуют так же, как силы - PullRequest
0 голосов
/ 04 февраля 2012

Итак, я создал тело и наполнил его спрайтом. Проблема в том, что если я применяю силу к телу, спрайт поднимается выше, чем тело (что я вижу из debug_draw) Есть идеи, почему это происходит?

UPDATE

- (void)tick:(ccTime) dt {

    _world->Step(dt, 10, 10);

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

}

А вот как я называю это в моем методе init:

[self schedule:@selector(tick:)];

1 Ответ

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

Цикл for, который получает User_Data, продолжает повторяться время от времени, поэтому обновление позиции существа будет затруднено. Пожалуйста, переместите позицию спрайтов в методе тиков ....

-(void) moveCreature
{
    // Please use the position to set the directions. This is used to fall from upside down in Portrait mode
    [spriteCreature setPosition:ccp(spriteCreature.position.x,spriteCreature.position.y-5)];

}

Теперь в расписании метода init спрайт

-(id) init
{
    if((self = [super init])) 
    {
        // Create your World and other stuffs 
        [self schedule:@selector(moveCreature)];

    }
return self;
}

Приведенный выше материал будет нести спрайт в теле и падать ...

...