使用box2d和cocos2d,我在定义一个实体时遇到了问题。 我拥有的每个精灵都调用一个定义它的主体,形状,夹具的函数,这个函数得到一个调用者精灵的参数。
现在我这样做是为了不为每个精灵写太多mant代码,因为我将有很多精灵。
在我的联系人听众中,我必须这样做:
if ((contact.fixtureA == _bottomFixture && contact.fixtureB == _ballFixture) || ...
现在,因为定义夹具和身体的功能是通用的,我没有每个身体的夹具名称,因此,我不知道如何给听者一个特定的身体固定装置。
每个sprite调用以定义其fixture和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;
spriteBody = world->CreateBody(&spriteBodyDef);
b2CircleShape spriteShape; //b2polygon-for box shape
spriteShape.m_radius = 35.0/PTM_RATIO;
//spriteShape.SetAsBox(sprite.contentSize.width/PTM_RATIO/2,sprite.contentSize.height/PTM_RATIO/2); //for b2polygon
b2FixtureDef spriteShapeDef;
spriteShapeDef.shape = &spriteShape;
spriteShapeDef.density = 10.0;
spriteShapeDef.isSensor = false;
spriteBody->CreateFixture(&spriteShapeDef);
}
并且如你所见,她得到一个精灵作为参数,所以不是每个精灵都有自己的夹具名称。 所以我该怎么做 ? 我现在不想为每个精灵定义一个灯具?
非常感谢。