0

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

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检查精灵相对于节点的位置,而不是相对于自身的位置?

4

1 回答 1

1
CGPoint local = [s convertTouchToNodeSpace:touch];

您想转换为父节点空间,在本例中为s.

于 2013-05-27T23:31:56.477 回答