Да, это возможно. Один из способов проверки касаний - использовать CCTouchDispatcher.
Обзор
- Определите, какой класс будет следить за касаниями ваших спрайтов.
- Сделайте класс делегатом CCTargetedTouchDelegate.
- Добавить код в класс для регистрации в CCTouchDispatcher.
- Добавить код в класс для отмены регистрации с помощью CCTouchDispatcher.
- Добавьте сенсорные методы обратного вызова в ваш класс. В методах обратного вызова касания необходимо добавить код для определения, какой спрайт был затронут.
Зарегистрируйтесь и отмените регистрацию в Диспетчере
[[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:YES];
[[CCTouchDispatcher sharedDispatcher] removeDelegate:self];
Методы CallBack для реализации
- (BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event
- (void)ccTouchMoved:(UITouch *)touch withEvent:(UIEvent *)event
- (void)ccTouchEnded:(UITouch *)touch withEvent:(UIEvent *)event
Пример кода для тестирования, если Touch In Sprite
- (BOOL) isTouch:(UITouch *)touch InSprite:(CCSprite *)sprite
{
CGPoint touchLocation = [touch locationInView: [touch view]];
touchLocation = [[CCDirector sharedDirector] convertToGL: touchLocation];
CGPoint localLocation = [sprite convertToNodeSpace:touchLocation];
CGRect spriteRect = [sprite textureRect];
spriteRect.origin = CGPointZero;
if(CGRectContainsPoint(spriteRect, localLocation))
{
return YES;
}
return NO;
}