2013-03-11 3 views
0

im jeu prise avec cocos2d + box2d .game fonctionne très bien, mais après un certain temps de jouer mon b2world va pendu (ligne de terre se disparu en mode drawDebug) et certains des attributs de mes b2bodies devenir NAN. (je ne sais pas quel code dois-je coller ici! :()b2World se comporte bizarrement (BOX2D + Cocos2d)

ce code est problématique ??

std::vector<b2Body *>toDestroy;  
    //Iterate over the bodies in the physics world 
    for (b2Body* b = world->GetBodyList(); b; b = b->GetNext()) 
    {      
     if (b->GetUserData() != NULL) { 
      //Synchronize the AtlasSprites position and rotation with the corresponding body 
      CCSprite *myActor = (CCSprite*)b->GetUserData(); 

      myActor.position = CGPointMake(b->GetPosition().x * PTM_RATIO, b->GetPosition().y * PTM_RATIO); 
     myActor.rotation = -1 * CC_RADIANS_TO_DEGREES(b->GetAngle()); 


      if(myActor && myActor.tag==5){ 

       if([myActor opacity]==0){      

        toDestroy.push_back(b);       

       } 
      } 
    } 
} 
+1

commencer par le code de mise à jour du monde, collission rappels et comment vous créez et supprimez des corps. – LearnCocos2D

+0

merci mon pote ... j'avais débogué mes toutes les lignes ..et j'ai trouvé qu'il y avait une expression qui tend à diviser par zéro exception dans mon calcul qui bloquait tout le monde ... – BaSha

Répondre

-1

j'avais mes débogué toutes les lignes ..et j'ai trouvé qu'il y avait une Wich d'expression tend à diviser par zéro exception dans mon calcul qui a été stucking monde entier ...

+1

@ IronMan84 Il ** est ** l'auteur et il dit ce qui n'allait pas. –

0

Dans événement Init Créer correctement du monde comme ci-dessous

b2Vec2 gr avity = b2Vec2 (0,0f, -9,8f); _world = new b2World (gravité);

+0

j'ai déjà .. b2Vec2 gravité ; gravity.Set (0,0f, -10,0f); bool doSleep = true; monde = nouveau monde b2 (gravité, sommeil); monde-> SetContinuousPhysics (true); – BaSha

Questions connexes