1

几天来我一直试图解决这个问题,但我无法弄清楚我的问题是什么。

所以我使用 cocos2d 和 chipmunk-spaceManager 来创建我的游戏。所以我正在做的是创建 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 个形状的屏幕截图。在此处输入图像描述

4

1 回答 1

0

好的,带着很多挫败感,我终于找到了我的问题。在花栗鼠空间开始模拟后,我正在移动一个静态形状。所以我通过设置修复它smgr.rehashStaticEveryStep = YES;

于 2013-03-01T21:59:35.780 回答