Подкласс CCSprite. Тогда в его инициации:
[[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:NO];
Реализация методов ccTouch:
- (BOOL) ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event;
- (void) ccTouchEnded:(UITouch *)touch withEvent:(UIEvent *)event;
- (void) ccTouchMoved:(UITouch *)touch withEvent:(UIEvent *)event;
- (void) ccTouchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event;
Теперь у вас есть два варианта. Вы можете иметь переменную делегата для обратного вызова или использовать NSNotifications. Пойдите с обратным вызовом здесь, это быстрее.
// in your @interface
id touchDelegate; // between the {}'s
@property (nonatomic, assign) id touchDelegate;
Внутри вашего игрового класса, когда вы создаете своих плохих парней:
NewCCSprite = newSprite = [NewCCSprite init];
newSprite.touchDelegate = self;
А когда вы касаетесь одного:
- (void) ccTouchEnded:(UITouch *)touch withEvent:(UIEvent *)event {
if (self.touchDelegate == nil) return;
[self.touchDelegate performSelector:@selector(touched:) withDelay:0.0f];
}
Наконец, ваше прикосновение: метод:
- (void) touch:(id)sender {
NewCCSprite* sprite = (NewCCSprite*)sender;
// hide/kill off/etc
}