2011-04-28 178 views
1

我得到了2個精靈。我使用邊界框來檢查與CGRectIntersectsRect的衝突。但它不起作用。 HBBall和HBpaddle有一個名爲image的CCSprite。cocos2d精靈碰撞檢測包圍盒

初始化:

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 retuns總是如此。有人有想法嗎?

回答

6

你不能直接傳遞邊界框,因爲它相對於精靈。您必須像這樣通過絕對CGRect邊界框:

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

進行必要的調整!

希望能幫助!

+0

是的,這是正確的做法。 +1 – tallen11 2011-04-30 13:49:18

+0

一個小問題,但不是s.position.x和s.position.y指向精靈的中心?我想你應該使用: CGRect absoluteBox = CGRectMake([s boundingBox] .origin.x,[s boundingBox] .origin.y,[s boundingBox] .size.width ,[s boundingBox] .size.height); HTH – Ted 2012-02-24 11:25:17

+0

取決於您的定位點。 – renevdkooi 2012-04-05 05:50:36