OK、IMを更新しBOX2D、私はスプライトに身体を加えるの一部になっている、[OK]をHERES問題、I私のスプライトに体を追加することはできませんBOX2DにRWのチュートリアル以下
私ができます'cat'スプライトにスプライトボディを追加しますが、ボディを 'car'スプライトに追加しようとするとクラッシュするだけです。 ボディが 'cat'スプライトに追加されていればうまく動作します私はボディを「車」に追加できませんか? 両者は同じメソッドを使用してボディを追加します。
相続人体を添加する方法:
- (void)addBoxBodyForSprite:(CCSprite *)sprite {
b2BodyDef spriteBodyDef;
spriteBodyDef.type = b2_dynamicBody;
spriteBodyDef.position.Set(sprite.position.x/PTM_RATIO,
sprite.position.y/PTM_RATIO);
spriteBodyDef.userData = sprite;
b2Body *spriteBody = _world->CreateBody(&spriteBodyDef);
b2PolygonShape spriteShape;
spriteShape.SetAsBox(sprite.contentSize.width/PTM_RATIO/2,
sprite.contentSize.height/PTM_RATIO/2);
b2FixtureDef spriteShapeDef;
spriteShapeDef.shape = &spriteShape;
spriteShapeDef.density = 10.0;
spriteShapeDef.isSensor = true;
spriteBody->CreateFixture(&spriteShapeDef);
}
ここでは '猫' 相続人
- (void)spawnCat {
CGSize winSize = [CCDirector sharedDirector].winSize;
CCSprite *cat = [CCSprite spriteWithSpriteFrameName:@"cat.jpg"];
//code here.......
[self addBoxBodyForSprite:cat];
[_spriteSheet addChild:cat];
}
のコードのためのコードであります「車」
- (void)spawnCar {
CCSprite *car = [CCSprite spriteWithSpriteFrameName:@"car.jpg"];
car.position = ccp(100, 100);
car.tag = 2;
[self addBoxBodyForSprite:car];
[_spriteSheet addChild:car];
}
それがクラッシュした上記のコードでOK、私はspawnCarメソッドから[self addBoxBodyForSprite:car];
を削除した場合、それはクラッシュをdoesntの、そして唯一の「猫の体ではなく、「車」を持っています...必要な助けが今非常に混乱しています。ありがとう
ところで、あなたは子供としてプレーヤーを2回追加しています。 –
あなたのコード全体が良いです...スプライトの画像やフレームがあるかどうかをスプライトシートで確認することをお勧めします。同じコードをダウンロードして完全に動作します... – Marine