在box2d中为sp fixture添加一个sprite

时间:2013-08-29 18:16:17

标签: ios cocos2d-iphone box2d box2d-iphone

我正在尝试将精灵纹理添加到cocos2d中的box2d fixture。 目前我有一个动态的身体(用精灵纹理)和我试图添加纹理的夹具正被添加到身体。

这是我的代码:

b2PolygonShape fixtureShape;
fixtureShape.SetAsBox(0.6f,0.9f,b2Vec2(-1 + 0.1, 1), 45);
b2FixtureDef fixtureDef;
fixtureDef.shape = &fixtureShape;
fixtureDef.density = 0.1f;


b2BodyDef bodyDef;
bodyDef.type = b2_dynamicBody;
b2Body *body = world->CreateBody(&bodyDef);

b2CircleShape dynamicBox;
b2FixtureDef mainFixtureDef;
mainFixtureDef.shape = &dynamicBox; 
mainFixtureDef.density = 0.1f;

body->CreateFixture(&mainFixtureDef);
body->CreateFixture(&fixtureDef);

CCPhysicsSprite *sprite = [CCPhysicsSprite spriteWithSpriteFrameName:@"sprite1.png"];

[parent addChild:sprite];

[sprite setPTMRatio:PTM_RATIO];
[sprite setB2Body:body];

[sprite setPosition: ccp( p.x, p.y)];

我无法找到任何关于向固定装置添加精灵的文档,是否有人知道是否可能?

2 个答案:

答案 0 :(得分:1)

是的,这是可能的。但你必须自己做。夹具是附在b2body上的形状(带有道具)。它与将孩子添加到CCNode看起来非常相似。

因此,您可以创建根节点(只是分组CCNode)并将其位置/旋转与b2Body转换同步。向主体添加灯具时 - 将该灯具的精灵添加到根节点。并按照放置夹具的方式定位它。

答案 1 :(得分:0)

是的,您可以通过将sprite设置为fixture的用户数据来完成此操作。并根据世界中的夹具位置设置精灵位置