1

我使用 cocos2d-iphone-0.99.2 并集成在 box2d 中。我有 2 种带有标签 1 和 2 的精灵。我还为它们创建了身体和形状定义。我想要做的是让 sprite1 种类在 sprite2 与它们碰撞时充当实体或不实体。我试过这段代码:

for(b2Body *b = _world->GetBodyList(); b; b=b->GetNext()) 
{    
  if (b->GetUserData() != NULL) 
    {
      CCSprite *sprite = (CCSprite *)b->GetUserData();     
        if (sprite.tag == 1) 
        {
            b2Fixture* f = b->GetFixtureList();
            f->SetSensor(solid);
        }
    }
}

固体是布尔值。当我第一次将夹具更改为传感器时,一切都很好,但是当我尝试恢复并再次更改为固态时,我的应用程序崩溃并出现以下错误:断言失败:(manifold->pointCount > 0),函数 b2ContactSolver,文件 /Documents /myapp/libs/Box2D/Dynamics/Contacts/b2ContactSolver.cpp,第 58 行。

是否有可能以某种方式更改fixture->SetSensor 几次,如果是这样......如何?非常感谢任何帮助。

4

1 回答 1

1

嗯......答案是固定装置保存在数组中,所以如果你每个身体只有 1 个固定装置,它会看起来像:

for(b2Body *b = _world->GetBodyList(); b; b=b->GetNext()){if (b->GetUserData() != NULL) 
{
  CCSprite *sprite = (CCSprite *)b->GetUserData();     
    if (sprite.tag == 1) 
    {
        b2Fixture* f = b->GetFixtureList();
        f[0]->SetSensor(solid);
    }
}

}

于 2010-10-05T08:20:31.173 回答