我的代码在我的世界中的任何身体上施加重力,并且我有一个球,在它被重力落下之后,我需要它再次出现并再次通过重力坠落。 所以它倒下了,但是当我把它放回去时,它不会再次掉下来。为什么??
我每帧都调用这个::
-(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);
}
所以球出现并留在那里。 重力不会对任何身体,所有时间,每一帧都有效吗?
非常感谢
答案 0 :(得分:1)
很明显。你应该在你的条件下改变身体的位置,而不是精灵。并且改变条件看起来像这样:
if (body->GetPosition().y < 0)
{
b2Vec2 newPos(...); //put your pos
body->SetTransform(newPos, body->GetAngle());
}
现在你的身体在y位置值小于零之后继续下降。