【发布时间】:2010-02-25 19:10:59
【问题描述】:
基本上我的身体有 2 个多边形。当我为 userData 添加精灵时,纹理的位置不是我想要的。我想要做的是调整纹理在体内的位置。这是我设置的代码示例:
CCSpriteSheet *sheet = (CCSpriteSheet*) [self getChildByTag:kTagSpriteSheet];
CCSprite *pigeonSprite = [CCSprite spriteWithSpriteSheet:sheet rect:CGRectMake(0,0,40,32)];
[sheet addChild:pigeonSprite z:0 tag:kPigeonSprite];
pigeonSprite.position = ccp( p.x, p.y);
bodyDef.position.Set(p.x/PTM_RATIO, p.y/PTM_RATIO);
bodyDef.userData = sprite;
b2Body *body = world->CreateBody(&bodyDef);
b2CircleShape dynamicCircle;
dynamicCircle.m_radius = .25f;
dynamicCircle.m_p.Set(0.0f, 1.0f);
// Define the dynamic body fixture.
b2FixtureDef circleDef;
circleDef.shape = &dynamicCircle;
circleDef.density = 1.0f;
circleDef.friction = 0.3f;
body->CreateFixture(&circleDef);
b2Vec2 vertices[3];
vertices[0].Set(-0.5f, 0.0f);
vertices[1].Set(0.5f, 0.0f);
vertices[2].Set(0.0f, 1.0f);
b2PolygonShape triangle;
triangle.Set(vertices, 3);
b2FixtureDef triangleDef1;
triangleDef1.shape = ▵
triangleDef1.density = 1.0f;
triangleDef1.friction = 0.3f;
body->CreateFixture(&triangleDef1);
【问题讨论】:
-
我可以建议尝试从代码 sn-p 中删除所有不必要的内容吗?例如,密度和摩擦力几乎与精灵定位无关。一方面,我不愿意通过一大段代码来回答一个简单的问题。另一方面,如果您不确定某件事是否不会影响您的问题,最好将其保留。但请尽量减少到最低限度。
标签: iphone cocos2d-iphone box2d box2d-iphone