在一般机构上联系听众

时间:2011-07-03 13:44:41

标签: xcode cocos2d-iphone box2d

使用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);

}

并且如你所见,她得到一个精灵作为参数,所以不是每个精灵都有自己的夹具名称。 所以我该怎么做 ? 我现在不想为每个精灵定义一个灯具?

非常感谢。

0 个答案:

没有答案