2013-02-28 66 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;