Cocos2d táctil con múltiples capas

He estado ocupado durante unos días tratando de descubrir cómo manejar el tacto en mi proyecto Cocos2d. La situación es un poco diferente de lo normal. Tengo algunas capas de juego diferentes que tienen elementos que necesito controlar con el tacto:

ControlLayer: contiene los controles del juego (movimiento, botón de acción). Esta capa está en la parte superior.GameplayLayer: contiene los objetos del juego (CCSprites). Esta capa está directamente debajo de ControlLayer.

Ahora mis toques funcionan bien en ControlLayer, puedo mover a mi personaje jugable y hacerlo saltar y hacer otras cosas tontas. Sin embargo, no puedo entender cómo implementar los toques en algunos de mis CCSprites.

La información que he reunido hasta ahora me hace pensar que necesito obtener toda mi información táctil de la capa de control. Entonces, de alguna manera, necesito 'poner en cascada' la información táctil en GameplayLayer para poder manejar la entrada allí. Otra opción sería que obtuviera la información CGRect de mis sprites creando de alguna manera una matriz con punteros a los objetos que deberían ser tocables. Debería poder usar esa información en ControlLayer para verificar cada elemento de esa lista si el elemento fue tocado.

¿Cuál es la mejor opción para hacer esto y cómo lo implemento? Soy un poco nuevo en la programación con cacao y Objective C, así que no estoy realmente seguro de cuál es la mejor opción para este lenguaje y cómo acceder a la información de sprites CGRect ([mySpriteName boundingBox]) en otra clase y luego en la capa en la que se encuentra. prestado en.

En este momento, la única forma en que estoy seguro de que funcione es crear CGRects duplicados para cada posición de CCSprite y así puedo verificarlos, pero sé que esta no es la forma correcta de hacerlo.

Lo que tengo hasta ahora (para probar) es esto: 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's 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));

}

Gracias de antemano por ayudarme!

Respuestas a la pregunta(1)

Su respuesta a la pregunta