Вы реализуете методы ccTouchesBegan / Ended / Moved в своем классе Layer, а затем проверяете местоположение касания относительно контейнера узлов, для которых вы хотите обнаружить касания.
Например:
-(BOOL)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch touch = [touches anyObject];
CGPoint location = [[Director sharedDirector] convertCoordinate: [touch locationInView: [touch view]]];
CGRect mySurface = CGRectMake(100, 100, 50, 50);
if(CGRectContainsPoint(mySurface)) {
// do something
return kEventHandled;
}
return kEventIgnored;
}
Теперь, все это изменяется в Cocos2D 0.8 (который сейчас находится в активной бета-версии) с помощью «Touch Delegates», и примеры можно увидеть в «Touches Test» (который выглядит как игра в понг из источника, который я только что посмотрел более).
Я не уверен, почему Кори сказал использовать элементы управления UIKit для обнаружения касаний, поскольку у Cocos2D есть свой собственный способ их обработки.
Только касания могут получать прикосновения - не рекомендуется использовать Слой для каждого осязаемого «игрового объекта» (т. Е. Игроков и объектов) ...