title: Detecting if a specific sprite was touched on Cocos2d-iphone
body: <p>I was following Ray`s tutorial for making a simple iPhone game (here: <a href="http://goo.gl/fwPi" rel="nofollow">http://goo.gl/fwPi</a>) , and decided that i wanted the enemies to be eliminated when they get touched.</p>
  
  <p>My initial approach was to spawn a small CCSprite sprite on the touch location, then use CGRectMake to create a bounding box of said sprite to detect if the enemy sprite was touched. Much like Ray does with the projectile/enemy. But of course, my way of doing it isnt working and i cant dig myself out of this hole.</p>
  
  <p>Here is the relevant code snippet. Any help is appreciated:</p>
  
  <pre>
  - (void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
  
      // Choose one of the touches to work with
      UITouch *touch = [touches anyObject];
      CGPoint location = [self convertTouchToNodeSpace: touch];
      location = [[CCDirector sharedDirector] convertToGL:location];
      CCSprite *touchedarea = [CCSprite spriteWithFile:@"Icon-72.png" rect:CGRectMake(location.x, location.y, 2, 2)];
      touchedarea.tag = 2;
      [self addChild:touchedarea];
      [_touchedareas addObject:touchedarea];
  
  }
  
  
  
  - (void)update:(ccTime)dt {
  
      NSMutableArray *touchedareasToDelete = [[NSMutableArray alloc] init];
      for (CCSprite *touchedarea in _touchedareas) {
          CGRect touchedareaRect = CGRectMake(
                                             touchedarea.position.x, 
                                             touchedarea.position.y, 
                                             touchedarea.contentSize.width, 
                                             touchedarea.contentSize.height);
  
          NSMutableArray *targetsToDelete = [[NSMutableArray alloc] init];
          for (CCSprite *target in _targets) {
              CGRect targetRect = CGRectMake(
                                             target.position.x - (target.contentSize.width/2), 
                                             target.position.y - (target.contentSize.height/2), 
                                             target.contentSize.width, 
                                             target.contentSize.height);
  
              if (CGRectIntersectsRect(touchedareaRect, targetRect)) {
                  [targetsToDelete addObject:target];             
              }                       
          }
  
          for (CCSprite *target in targetsToDelete) {
              [_targets removeObject:target];
              [self removeChild:target cleanup:YES];                                  
          }
  
          if (targetsToDelete.count > 0) {
              [touchedareasToDelete addObject:touchedarea];
          }
          [targetsToDelete release];
      }
  
      for (CCSprite *touchedarea in touchedareasToDelete) {
          [_touchedareas removeObject:touchedarea];
          [self removeChild:touchedarea cleanup:YES];
      }
      [touchedareasToDelete release];
  }
  </pre>