2013-02-28 65 views
1

我一直试图弄清楚这几天,但我一直无法弄清楚我的问题是什么。cpShapes不会碰撞?

所以我使用cocos2d和花栗鼠空间管理器来创建我的游戏。所以我正在做的是创建4个cpShapes,并附加到一个cpBody并将它们附加到CCSprite。这是我的代码。

- (id) helmetInit:(Game*)game { 

    cpShape *helmet_1; 
    cpShape *helmet_2; 
    cpShape *helmet_3; 

    cpShape *reference = [game.spaceManager addCircleAt:cpvzero mass:STATIC_MASS radius:2]; 

    helmet_1 = [game.spaceManager addCircleToBody:reference->body radius:20 offset:cpv(-5, 2)]; 

    helmet_2 = [game.spaceManager addCircleToBody:reference->body radius:8 offset:cpv(16, -14)]; 

    helmet_3 = [game.spaceManager addCircleToBody:reference->body radius:8 offset:cpv(8, -14)]; 

    reference->group = 1; 
// helmet_1->group  = 1; 
// helmet_2->group  = 1; 
// helmet_3->group  = 1; 


    [self initWithFile:@"Helmet.png"]; 
    [self setShape:reference]; 
    //[self setBody:reference->body]; 

    self.spaceManager = game.spaceManager; 
    self.autoFreeShapeAndBody = YES; 

    gameScreenSize = game.contentSize; 

    return self; 
} 

所以我的问题是,我得到任何的冲突是,如果我在我的游戏其他形状的一个碰撞的(参考形状)的唯一时间,这是与人体产生的形状,所有形状正在分享。如果我了解花栗鼠的工作方式,并不是每个形状都有碰撞,因为其他形状就像那里一样。其他形状直接通过它们,直到它们与参考形状相碰撞,参考形状是目前唯一具有任何碰撞的形状。我做错了什么,或者我不理解花栗鼠的工作方式?

下面是我创建的4个形状的屏幕截图。 enter image description here

+0

来修复它我们可以看到设置碰撞的位置吗? – daveMac 2013-02-28 16:41:28

+0

我真的可以在这方面使用一些帮助。我不知道什么是错的? – Stephen 2013-03-01 16:12:20

回答

0

好吧,有很多挫折我终于想通了我的问题。花栗鼠空间开始模拟后,我正在移动一个静态形状。所以我通过设置smgr.rehashStaticEveryStep = YES;