我有两个精灵,一个被添加为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");
}
}
但是控件永远不会进入循环。还有其他解决方案吗?有人请帮帮我。
答案 0 :(得分:0)
设置断点并比较rect和position的值。其中一个可能是零或离开。
在后一种情况下,您可能需要先将bbox原点和位置转换为世界坐标,以便进行比较。当精灵的父母也在移动时(父位置!= 0,0)就是这种情况。