2011-02-08 18 views
0

ボールを画面上でランダムに跳ね返してターゲットに当たった場合、ゲームに勝ちます。したがって、ボールスプライトとターゲットスプライトの間に衝突検出を作成しようとしています。ボールの実装はゲームプレイクラスから別のクラスで行われ、ターゲットがそうのようなゲームプレイクラスに追加されます。衝突検出ココス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"); 
    } 
} 

私がコメントアウトコードでボールを追加した場合、私はこの方法が仕事を得ることができますが、これは私がしたいことではありません。どんな助けでも大歓迎です!

+0

私はボールとtarg etが追加され、ボールが回転し続けます。あなたの問題はボールの動きにありますか? – xuanweng

+0

よくボールの動きは別のクラスで定義され、ラインでシーンに追加されます CCSprite * ball = [[Ball alloc] init]; [self addChild:ball]; 本質的に、画面と固定されたターゲットの周りにランダムに跳ね返るボールがあります。ボールがターゲットの上に乗るか、ボールと衝突すると、コンソールに衝突が検出されたと言いたい – Tossy12

答えて

-2

使用についての衝突ごとminisecond

0

をチェックCCSchedulerどのようにスケジュール更新の内部または直接スケジュール更新方法であなたの衝突メソッドを呼び出す必要があります。あなたはそれが衝突を確認します

[self targetCollision]; 

を呼び出すことができscheduleUpdate方法で

[self scheduleUpdate]; 

あなたのinitメソッド内this-

よう 何かが、すぐにボールが別のボール

私はそれを願っていますを打ちますあなたの問題をクリアします