CCSprite detection via touch without transparent pixel

68 Views Asked by At

I am trying to detect a touch on a CCSprite using:

@implementation MainScene{
    CCPhysicsNode *_levelView;
}

- (void)touchBegan:(CCTouch *)touch withEvent:(CCTouchEvent *)event{
    CGPoint location = touch.locationInWorld;
    CCSprite *clickedSprite;

    for (CCSprite *obj in _levelView.children)
    {
        if (CGRectContainsPoint(obj.boundingBox, location))
            clickedSprite = obj;
    }
}

which works perfectly fine. So I can detect clicked Sprites already. Since I am using sprites which are transparent at some parts, they are also detected when the transparent part of the sprite is clicked.

But I want to exclude the transparent part from the detection…

For the physics I am using physics shape polygon. Is there a way to use this polygon for something like:

polygonContainsPoint(obj.physicsPolygon, location)

? Or maybe even a way saying all pixels but those with transparency 100? Or an even easier solution?

0

There are 0 best solutions below