CCSpriteBatchNode和CCParallaxNode中Sprite的碰撞

时间:2012-09-21 04:04:04

标签: iphone xcode cocos2d-iphone

我有两个精灵,一个被添加为CCSpriteBatchNode的子节点,另一个被添加为CCParallaxNode的子节点。有没有办法检测他们的碰撞?我使用了以下代码。

 -(void)CheckCollition:(CCSprite *)Opp_Obs Opponent:(CCSprite *) H_man
{
  // NSLog(@"inside check collision");
CGRect b_rect=[Opp_Obs boundingBox];
CGPoint p_position=[H_man position];

if (CGRectContainsPoint(b_rect,p_position))
{    
    NSLog(@"collision with opponent");


    // Zoom Animation with Points
    CCScaleBy *zzomscal=[CCScaleTo actionWithDuration:.2 scale:.12];
    CCRotateTo * rotLeft = [CCRotateBy actionWithDuration:0.2 angle:360];
    CCCallFunc *ccfun=[CCCallFunc actionWithTarget:self selector:@selector(zoomComplete)];
    CCSequence * zzomseq = [CCSequence actions:zzomscal,rotLeft,ccfun, nil];
    [H_man runAction:zzomseq];
}
else
{
    NSLog(@"no collision");
}


}

但是控件永远不会进入循环。还有其他解决方案吗?有人请帮帮我。

1 个答案:

答案 0 :(得分:0)

设置断点并比较rect和position的值。其中一个可能是零或离开。

在后一种情况下,您可能需要先将bbox原点和位置转换为世界坐标,以便进行比较。当精灵的父母也在移动时(父位置!= 0,0)就是这种情况。