2011-06-23 3 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); //あなたのポジションを入れてください – Curnelious

+0

ok、PTM_RATIOを追加するのを忘れてしまいましたが、体が世界に戻るたびに重力はますます高くなり、最後のものに追加されます。ここで何が間違っていますか? – Curnelious

+0

@Rant:まだ問題は残っていますか? – Andrew

関連する問題