ボールを画面上でランダムに跳ね返してターゲットに当たった場合、ゲームに勝ちます。したがって、ボールスプライトとターゲットスプライトの間に衝突検出を作成しようとしています。ボールの実装はゲームプレイクラスから別のクラスで行われ、ターゲットがそうのようなゲームプレイクラスに追加されます。衝突検出ココス2D
-(void) targetCollision{
CCSprite *target = [CCSprite spriteWithFile:@"target.png"];
target.position = ccp(400,50);
[self addChild:target];
CCSprite *ball = [[Ball alloc] init];
[self addChild:ball];
//CCSprite *ball = [CCSprite spriteWithFile:@"ball2.png"];
//ball.position = ccp(400,75);
//id a1 = [CCRotateBy actionWithDuration:1 angle:360];
//id repAct = [CCRepeatForever actionWithAction:a1];
//[ball runAction: repAct];
//[self addChild:ball];
CGRect ballRect = [ball boundingBox];
CGRect targetRect = [target boundingBox];
if (CGRectIntersectsRect(ballRect, targetRect)) {
NSLog(@"Target hit! Collision detected");
}
}
私がコメントアウトコードでボールを追加した場合、私はこの方法が仕事を得ることができますが、これは私がしたいことではありません。どんな助けでも大歓迎です!
私はボールとtarg etが追加され、ボールが回転し続けます。あなたの問題はボールの動きにありますか? – xuanweng
よくボールの動きは別のクラスで定義され、ラインでシーンに追加されます CCSprite * ball = [[Ball alloc] init]; [self addChild:ball]; 本質的に、画面と固定されたターゲットの周りにランダムに跳ね返るボールがあります。ボールがターゲットの上に乗るか、ボールと衝突すると、コンソールに衝突が検出されたと言いたい – Tossy12