2013-05-27 6 views
0

Итак, я ищу, чтобы коснуться определенного спрайта, который является дочерним элементом другого, который является дочерним узлом узла. Конструкция:CCSprites не сохраняют относительное положение, когда ребенок другого спрайта

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); 
} 

Теперь это должно работать, но оказывается, что т возвращает это BoundingBox как координаты по отношению к себе, а не измененный по его положению. Есть ли способ получить boundingBox таким образом, чтобы он проверял положение спрайта относительно узла, а не относился к самому себе?

ответ

1
CGPoint local = [s convertTouchToNodeSpace:touch]; 

Вы хотите преобразовать в nodespace родителя, в этом случае, s.

+0

Вы знаете, я забыл, что задал этот вопрос, потому что действие просьбы заставило меня задуматься, и я сам ответил сам. В любом случае, спасибо за это :) могут ли будущие люди найти этот ответ. –

Смежные вопросы