只需一次又一次地施加重力

时间:2011-06-23 11:28:31

标签: xcode cocos2d-iphone box2d

我的代码在我的世界中的任何身体上施加重力,并且我有一个球,在它被重力落下之后,我需要它再次出现并再次通过重力坠落。 所以它倒下了,但是当我把它放回去时,它不会再次掉下来。为什么??

我每帧都调用这个::

-(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 个答案:

答案 0 :(得分:1)

很明显。你应该在你的条件下改变身体的位置,而不是精灵。并且改变条件看起来像这样:

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

现在你的身体在y位置值小于零之后继续下降。