2011-06-23 51 views
0

我的代碼在我的世界中的任何身體上應用重力,我有一個球,它在重力墜落後,我需要它再次上升,再次因重力而墜落。 所以它掉下來,但是當我把它放回去時,它不會再掉下來。爲什麼?簡單地應用引力一次又一次

我把這每一幀::

-(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

很明顯。你應該改變你身體的位置,而不是精靈。並且改變情況看起來像這樣:

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

現在你的身體在y位置值小於零後繼續下降。

+0

謝謝,但我做了你所說的,當身體脫離屏幕它不會回到我把它放在哪裏,我這樣做:b2Vec2 newPos(200,200); //把你的pos – Curnelious

+0

好,它的工作我忘了添加PTM_RATIO,但似乎每次身體回到世界時,它的引力越來越高,因爲它將它添加到最後一個。這裏有什麼不對? – Curnelious

+0

@Rant:問題依然存在? – Andrew