3
イメージをCCSpriteに追加し、それをBox2dの世界の中で使用したいとします。 createBoxAtLocation
はcontentSize
を正しくピックアップしますが、イメージは表示されません...何が間違っていますか? 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);
}
}
Kazukiさん、ありがとうございます、保持はEXC_BAD_ACCESSエラーを停止します。しかし、画像はまだ表示されていません。 – daidai
私の答えを更新しました。 –
ありがとうございました!また、[(CCSprite *)body-> GetUserData()release];行く? – daidai