2011-04-28 28 views
1

2つのスプライトがあります。私はboundingboxを使ってCGRectIntersectsRectとの衝突をチェックします。しかし、それは動作していません。 HBBallとHBpaddleにはimageというCCSpriteがあります。cocos2dスプライト衝突検出バウンディングボックス

INIT:

ball = [[HBBall alloc] init]; 
    ball.position = ccp(150, 50); 
    [self addChild:ball]; 
    [update addObject:ball]; 

    paddle1 = [[HBPaddle alloc] init]; 
    paddle1.position = ccp(50, 160); 
    [self addChild:paddle1]; 

更新:

if (CGRectIntersectsRect([paddle1.image boundingBox], [ball.image boundingBox])) 
    CCLOG(@"ball hit paddle"); 

CGRectIntersectsRectは常にtrue retuns。誰にもアイデアはありますか?

答えて

6

スプライトに相対的なので、バウンディングボックスを直接渡すことはできません。

s = CCsprite 
s.anchorPoint = ccp(0, 0);  
CGRect absoluteBox = CGRectMake(s.position.x, s.position.y, [s boundingBox].size.width, [s boundingBox].size.height); 

必要に応じて、絶対CGRect境界ボックスを渡す必要があります。

希望が助けることができます!

+0

これは正しい方法です。 +1 – tallen11

+0

小さな点ですが、s.position.xとs.position.yはスプライトの中心を参照していませんか? は、スプライトのための適切な矩形を取得するには、私はあなたが使うべきだと思う: CGRect absoluteBox = CGRectMake([SにBoundingBox] .origin.x、[SにBoundingBox] .origin.y、[SにBoundingBox] .size.width 、[sバウンディングボックス] .size.height); HTH – Ted

+0

あなたのアンカーポイントによって異なります。 – renevdkooi