2012-02-14 4 views
0

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の、そして唯一の「猫の体ではなく、「車」を持っています...必要な助けが今非常に混乱しています。ありがとう

+0

ところで、あなたは子供としてプレーヤーを2回追加しています。 –

+0

あなたのコード全体が良いです...スプライトの画像やフレームがあるかどうかをスプライトシートで確認することをお勧めします。同じコードをダウンロードして完全に動作します... – Marine

答えて

0

addBoxBodyForSpriteメソッドの先頭にブレークポイントを設定し、コードをステップ実行して実際にクラッシュが発生した場所を特定できますか?問題の原因を正確に判断することが重要です。メソッド内のすべてが正常に表示されるため、エラーが実際に発生していることを確認する必要があります。

これを行う方法がわからない場合は、Xcodeのデバッグを検索してください。

関連する問題