user1552400
user1552400

Reputation: 27

How to make certain sprite disappear after touched - Cocos2d

I want to know how to disappear certain sprite(star) once the MainPlayer touches the Star.

Thanks. By the way, I'm new to Cocos2d and I'm doing it just for fun and educational purpose. Thanks.

Upvotes: 0

Views: 788

Answers (1)

tallen11
tallen11

Reputation: 1377

If you want to be able to detect touches in cocos2d, you need to set the isTouchEnabled property to YES in your init method. You can now take advantage of touch events.

Next, create the new method:

- (void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    //This method gets triggered every time a tap is detected
    NSSet *allTouches = [event allTouches]; //Get all the current touches in the event
    UITouch *aTouch = [allTouches anyObject]; //Get one of the touches, multitouch is disabled, so there is only always going to be one.
    CGPoint pos = [aTouch locationInView:touch.view]; //Get the location of the touch
    CGPoint ccPos = [[CCDirector sharedDirector] convertToGL:pos]; //Convert that location to something cocos2d can use
    if (CGRectContainsPoint(yourSprite.boundingBox, ccPos)) //Method to check if a rectangle contains a point
    {
        yourSprite.visible = NO; //Make your sprite invisible
    }

}

Other methods that you may want to take advantage of eventually are the following:

- (void)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)ccTouchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event;

Hope this helped.

Upvotes: 1

Related Questions