просто применить гравитацию снова и снова - PullRequest
0 голосов
/ 23 июня 2011

мой код применяет гравитацию к любому телу в моем мире, и у меня есть шар, который после того, как он падает под действием силы тяжести, мне нужен, чтобы он снова поднялся и снова упал под действием силы тяжести.так что он падает, но когда я поднимаю его обратно, он снова не падает.ПОЧЕМУ ??

Я называю это каждым кадром: *

-(void)thick:(ccTime) dt
{


    world->Step(dt,10,10);
    for(b2Body *b=world->GetBodyList(); b; b=b->GetNext()) 
    {
        if(b->GetUserData() !=NULL )
           {
               CCSprite *bondanind1=(CCSprite *) b->GetUserData();
               bondanind1.position=ccp( b->GetPosition().x * PTM_RATIO, b->GetPosition().y * PTM_RATIO  ) ;
               //bondanind.rotation=-1*CC_RADIANS_TO_DEGREES(b->GetAngle());
           }

    }

    if(bondanind.position.y<0 )
    bondanind.position=ccp(300,300);


}

, поэтому мяч поднимается и остается там.разве гравитация не работает на любом теле, все время, на каждом кадре?

спасибо большое

1 Ответ

1 голос
/ 23 июня 2011

Это очевидно.Вы должны изменить положение тела в вашем состоянии, а не спрайта.И измените условие так, как это выглядит:

if (body->GetPosition().y < 0)
{
    b2Vec2 newPos(...); //put your pos
    body->SetTransform(newPos, body->GetAngle());
}

Теперь ваше тело просто продолжает падать после того, как значение его положения у меньше нуля.

...