0

我有两个精灵,一个添加为 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");
}


}

但是这里的控制永远不会进入循环。还有其他解决方案吗?任何人请帮助我。

4

1 回答 1

0

设置断点并比较rect和position的值。其中之一可能是零,或者很远。

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

于 2012-09-21T07:48:13.070 回答