2012-02-14 57 views
0

確定,即時通訊繼Box2D的的RW教程,我得增加身體的精靈,確定繼承人的問題的一部分,我不能身體添加到我的精靈Box2D的修訂

我可以在'貓'精靈上添加精靈主體,但是當我嘗試添加一個主體到'汽車'精靈時,它只是崩潰.. 它工作正常,如果我只是添加一個身體到'貓'精靈,但爲什麼不能我添加一個身體的'車'? 他們都使用相同的方法來添加一個body!

繼承人加入體的方法:

- (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]; 

}

繼承人用於該代碼的代碼'car'

- (void)spawnCar { 

CCSprite *car = [CCSprite spriteWithSpriteFrameName:@"car.jpg"]; 
car.position = ccp(100, 100); 
car.tag = 2; 

[self addBoxBodyForSprite:car]; 
[_spriteSheet addChild:car]; 

}

確定與崩潰上面的代碼,但如果我從spawnCar方法去除[self addBoxBodyForSprite:car];,那麼它不崩潰,只有「貓」的身體,而不是「車」 ...... 。需要幫助我現在很困惑。謝謝

+0

順便說一句,你是作爲一個孩子兩次加入球員。 – 2012-02-14 16:51:15

+0

你的整個代碼都很好......我建議你檢查一下spritesheet是否有精靈的圖像或框架....我已經下載了相同的代碼,它完全可以工作...... – Marine 2012-02-15 07:09:25

回答

0

您可以在addBoxBodyForSprite方法的開始處設置一個斷點並逐步執行代碼以確定實際發生崩潰的位置?確切地確定是什麼導致問題非常重要......方法中的所有內容看起來都很好,所以您需要確保其中的錯誤實際發生在這裏。

搜索Xcode調試,如果你不知道如何做到這一點。