Игнорирование прозрачных областей спрайтов в cocos2d
Я застрял буквально несколько недель, пытаясь понять, как я могу игнорировать прикосновения к прозрачным областям спрайта. Я'мы пытались следить за идеальными столкновениями пикселей с помощью этого урока -http://www.learn-cocos2d.com/2011/12/fast-pixelperfect-collision-detection-cocos2d-code-1of2/ но безрезультатно. Вот как выглядит мой код:
-(void)checkTap:(CGPoint)touch{
BOOL yesNo = NO;
if(yesNo == NO)
{
sprTap.position = ccp(touch.x, touch.y);
}}
-(void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
NSSet *allTouch = [event allTouches];
UITouch *touch = [[allTouch allObjects]objectAtIndex:0];
CGPoint location = [touch locationInView:[touch view]];
location = [[CCDirector sharedDirector]convertToGL:location];
[self checkTap:location];
touchFlag = 0;
for(int i = 0; i < [sprArray count]; i++)
{
KKPixelMaskSprite *sprite = (KKPixelMaskSprite *)[sprArray objectAtIndex:i];
if([sprTap intersectsNode:sprite])
{
selectedSprite = sprite;
touchFlag = 1;
break;
}
}}
-(void)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
NSSet *allTouch = [event allTouches];
UITouch *touch = [[allTouch allObjects]objectAtIndex:0];
CGPoint location = [touch locationInView:[touch view]];
location = [[CCDirector sharedDirector]convertToGL:location];
[sprTap setPosition:location];
if(touchFlag == 1)
{
_spriteTouch = TRUE;
[selectedSprite setPosition:location];
}
else
{
for(int i = 0; i < [sprArray count]; i++)
{
KKPixelMaskSprite *sprite = (KKPixelMaskSprite *)[sprArray objectAtIndex:i];
if([sprTap intersectsNode:sprite])
{
selectedSprite = sprite;
touchFlag = 1;
break;
}
}
}
}}
Проблема в том, что когда ограничивающий прямоугольник sprTap пересекается с ограничивающим прямоугольником спрайта, он перемещается и так, и мои спрайтыт идеальные квадраты, которые выиграютт делать Я также пытался pixelMaskIntersectsNode, но это неКажется, тоже не работает. Как еще можно игнорировать прикосновения к прозрачным частям спрайта? Пожалуйста, помогите мне.