Я был занят в течение нескольких дней, пытаясь понять, как обращаться с прикосновением в моем проекте Cocos2d. Ситуация немного другая, как обычно. У меня есть несколько разных игровых уровней, на которых есть элементы, которые мне нужно контролировать с прикосновением:
- ControlLayer: содержит элементы управления игрой (движение, кнопка действия). Этот слой находится сверху.
- GameplayLayer: удерживает игровые объекты (CCSprites). Этот уровень находится непосредственно под ControlLayer.
Теперь мои прикосновения отлично работают в ControlLayer, я могу перемещать свой игровой персонаж и заставить его прыгать и делать другие глупые вещи. Однако я не могу понять, как реализовать привязки к некоторым моим CCSprites.
Информация, которую я собрал до сих пор, заставляет меня думать, что мне нужно получить весь мой сенсорный ввод с уровня управления. Затем мне как-то нужно "каскадировать" сенсорную информацию на GameplayLayer, чтобы я мог обрабатывать входные данные там. Другим вариантом было бы получить информацию CGRect от моих спрайтов, создав массив с указателями на объекты, которые должны быть осязаемыми. Я должен иметь возможность использовать эту информацию в ControlLayer для проверки каждого элемента в этом списке, если элемент был затронут.
Каков наилучший вариант для этого и как это реализовать? Я новичок в программировании с помощью cocoa и Objective C, поэтому я не уверен, что лучший вариант для этого языка и как получить доступ к информации справки CGRect ([mySpriteName boundingBox]) в другом классе, затем слой он отображается.
В настоящий момент единственный способ, которым я уверен, заставить его работать, - создать дубликаты CGR для каждой позиции CCSprite, и поэтому я могу проверить их, но я знаю, что это неправильный способ сделать это.
Что я до сих пор (чтобы проверить): ControlLayer.m
- (void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
CGPoint location = [touch locationInView: [touch view]];
CGRect rect = CGRectMake(0.0f, 0.0f, 100.0f, 100.0f);
//Tried some stuff here to get see if I could get a sprite by tagname so I could use it bounding box but that didn't work
// Check for touch with specific location
if (CGRectContainsPoint([tree boundingBox], location)) {
CCLOG(@"CGRect contains the location, touched!");
}
CCLOG(@"Layer touched at %@", NSStringFromCGPoint(location));
}
Заранее благодарим за помощь!