CCSprites在另一个精灵的孩子时不保留相对位置

时间:2013-05-27 22:24:16

标签: cocos2d-iphone cocosbuilder

所以,我正在寻找一个特定的精灵,它是另一个孩子的孩子,它是一个节点的孩子。结构是

CCNode
    CCSprite | tag = 1 | node local coordinate = 0, 0
        CCSprite | tag = 2 | node local coordinate = 26.5, 133.5

我想检测第二个CCSprite上的触摸时间。所以,我在示例中标记它们并在触摸节点时运行方法,如此

-(BOOL) touchIsInBoundingBox:(UITouch *) touch withEvent:(UIEvent *) event
{   //node local coordinates
    CCSprite * s = (CCSprite *)[self getChildByTag:1];
    CCSprite * t = (CCSprite *)[s getChildByTag:2];
    CGPoint local = [self convertTouchToNodeSpace:touch];
    return CGRectContainsPoint(t.boundingBox, local);
}

现在,这应该可行,但事实证明t将其boundingBox作为相对于自身的坐标返回,而不是通过其位置进行修改。有没有办法获取boundingBox,以便它检查精灵相对于节点的位置,而不是相对于它自己?

1 个答案:

答案 0 :(得分:1)

CGPoint local = [s convertTouchToNodeSpace:touch];

您希望转换为父级的节点空间,在本例中为s