私はこれを数日間理解しようとしていますが、私の問題が何であるかを理解することができませんでした。
そのため、私はcocos2dとchipmunk-spaceManagerを使用してゲームを作成しています。つまり、私が行っているのは、1つのcpBodyに接続される4つのcpShapesを作成し、それらを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;
}
したがって、衝突が発生するのは、ゲーム内の他のシェイプの1つが、すべてのシェイプが共有しているボディで作成されたシェイプである(参照シェイプ)と衝突する場合だけです。シマリスのしくみを理解していれば、他の形はそこにさえないようなものなので、すべての形に衝突があるわけではありません。他のシェイプは、現在衝突している唯一のシェイプである参照シェイプと衝突するまで、それらを通過します。私は何か間違ったことをしているのですか、それともシマリスのしくみがわかりませんか?
これが私が作成した4つの形状のスクリーンショットです。