我一直试图解决这个问题几天,但我无法弄清楚我的问题是什么。
所以我使用cocos2d和chipmunk-spaceManager来创建我的游戏。所以我正在做的是创建附加到一个cpBody并将它们附加到CCSprite的4个cpShapes。这是我的代码。
- (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个形状的屏幕截图。
答案 0 :(得分:0)
好的,有很多挫折感,我终于弄明白了我的问题。在花栗鼠空间开始模拟后,我正在移动静态形状。所以我通过设置smgr.rehashStaticEveryStep = YES;