b2World表现得很奇怪(BOX2d + COCOS2d)

时间:2013-03-11 05:20:02

标签: cocos2d-iphone box2d

我正在使用cocos2d + box2d制作游戏。游戏运行正常,但经过一段时间的游戏,我的b2world被绞死(地面线在drawDebug模式下消失),我的一些b2bodies属性变为NAN。 (我不知道我应该在这里粘贴什么代码!:()

这段代码有问题吗?

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);                        

                }
            }   
    }   
}

2 个答案:

答案 0 :(得分:0)

在init事件中正确创建World,如下所示

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

答案 1 :(得分:-1)

我已经调试了我的所有行...我发现在我的计算中有一个表达式,它往往会被零除外...这就是全世界......