2011-07-28 9 views
3

イメージをCCSpriteに追加し、それをBox2dの世界の中で使用したいとします。 createBoxAtLocationcontentSizeを正しくピックアップしますが、イメージは表示されません...何が間違っていますか? update()関数に何かを追加する必要はありますか?Box2Dを使用してCCSpriteにUIImageを追加する

更新機能インサイド
CCSprite *sprite = [CCSprite spriteWithFile:@"slider_piece.png"]; 

    [self createBoxAtLocation:loc1 withSize:boxSize forSprite:sprite]; 


    -(void) createBoxAtLocation:(CGPoint)location withSize:(CGSize)size forSprite:(CCSprite *)_sprite 
    { 
     b2BodyDef bodyDef; 
     bodyDef.type = b2_dynamicBody; 
     bodyDef.position = b2Vec2(location.x/PTM_RATIO, location.y/PTM_RATIO); 
     bodyDef.allowSleep = false; 
     //bodyDef.userData = _sprite; 

     b2Body *body = world->CreateBody(&bodyDef); 
     body->SetUserData(_sprite); 

     b2FixtureDef fixtureDef; 

     b2PolygonShape shape; 
     shape.SetAsBox(_sprite.contentSize.width/2/PTM_RATIO, _sprite.contentSize.height/2/PTM_RATIO); 
     fixtureDef.shape = &shape; 

     body->CreateFixture(&fixtureDef);  
    } 

EDIT

私はこれを持っているが、それはスプライトのにaddChild'edされていない

for(b2Body *b = world->GetBodyList(); b != NULL; b = b->GetNext()) 
    {  
     if (b->GetUserData() != NULL) { 
      CCSprite *sprite = (CCSprite *) b->GetUserData(); 
      sprite.position = ccp(b->GetPosition().x * PTM_RATIO, b->GetPosition().y * PTM_RATIO); 
      sprite.rotation = CC_RADIANS_TO_DEGREES(b->GetAngle() * -1); 
     }  
    } 

答えて

2

sprite.position行にEXC_BAD_ACCESSエラーが発生任意のCCNode(CCLayerまたはCCSceneなど)?

もしそうなら、

CCSprite *sprite = [CCSprite spriteWithFile:@"slider_piece.png"]; 

スプライトは、()スプライトがオブジェクトを自動解放されるため、アップデートでリリースされる可能性があります。

あなたは

、CreateBodyで、この場合に

body->SetUserData([_sprite retain]); 
をスプライトを保持し、その後、DestroyBodyでそれを解放する必要があります。

[(CCSprite *)body->GetUserData() release]; 

私はCCBox2Dを使用することをお勧めします。

EDITED:

はあなたのCCSceneまたは子ノードにスプライトをにaddChildしましたか?

[self addChild:sprite]; 

体の位置(loc1)が画面の範囲内にありますか?

+0

Kazukiさん、ありがとうございます、保持はEXC_BAD_ACCESSエラーを停止します。しかし、画像はまだ表示されていません。 – daidai

+0

私の答えを更新しました。 –

+0

ありがとうございました!また、[(CCSprite *)body-> GetUserData()release];行く? – daidai

関連する問題