私は cocos2d-iphone-0.99.2 を使用し、box2d に統合しました。タグ 1 と 2 を持つ 2 種類のスプライトがあります。また、それらのボディと形状の定義を作成しました。私がやろうとしているのは、スプライト 1 の種類をソリッドとして機能させるか、スプライト 2 がそれらと衝突したときに非ソリッドとして機能させることです。私はこのコードを試しました:
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);
}
}
}
solid は bool です。初めてフィクスチャをセンサーに変更したときはすべて問題ありませんが、元に戻して再度ソリッドに変更しようとすると、次のエラーでアプリがクラッシュします: アサーションに失敗しました: (manifold->pointCount > 0), function b2ContactSolver, file /Documents /myapp/libs/Box2D/Dynamics/Contacts/b2ContactSolver.cpp、58 行目。
どういうわけかフィクスチャ-> SetSensor を数回変更することは可能ですか?どんな助けでも大歓迎です。