2013-03-11 34 views
0

IM制作游戏cocos2d + box2d。游戏工作正常,但我玩一些b2world时间的推移绞死后(接地线得到的drawDebug模式消失)和我的一些b2bodies'属性成为NAN。 (我不知道我应该在这里贴上什么码!:()b2World古怪行为(Box2D的cocos2d的+)

是这段代码有问题?

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

开始与世界更新代码,collission回调以及你如何创建和删除主体。 – LearnCocos2D 2013-03-11 09:11:32

+0

感谢好友......我已经调试了我所有的线......我发现有一个表达式,这往往会在我的计算中被零除异常除去,这是一个全球性的... – BaSha 2013-03-12 13:32:16

回答

-1

我调试了我所有的行..和我发现,有一个表达至极倾向于通过我的计算零异常这是stucking整个世界划分...

+1

@ IronMan84他**是作者,他在陈述什么是错的。 – 2013-03-12 14:25:36

0

在init事件创建世界妥善像下面

b2Vec2克avity = b2Vec2(0.0f,-9.8f); _world = new b2World(gravity);

+0

我已经.. b2Vec2重力; gravity.Set(0.0f,-10.0f); bool doSleep = true; world = new b2World(gravity,doSleep); world-> SetContinuousPhysics(true); – BaSha 2013-03-12 06:48:12