Detecta clic / toque en textura isométrica
Me está costando trabajo implementar el manejo de clics en un juego isométrico simple de Sprite Kit.
Tengo una escena de juego (SKScene) con un mapa (SKNode) que contiene varios objetos de mosaico (SKSpriteNode).
Aquí hay una captura de pantalla del mapa:
Quiero poder detectar el mosaico en el que hizo clic el usuario, así que implementé mouseDown en el objeto Tile. Aquí está mi mouseDown en Tile.m:
-(void)mouseDown:(NSEvent *)theEvent
{
[self setColorBlendFactor:0.5];
}
El código parece funcionar bien, pero hay una falla: los nodos se superponen y el evento de clic se detecta en la parte transparente del nodo. Ejemplo (las referencias se han agregado para ilustrar solo el problema. No se usan en la lógica):
Como puede ver, si hago clic en la esquina superior izquierda del mosaico 7, el mosaico 8 se vuelve transparente.
Intenté algo como obtener todos los nodos en la ubicación del clic y verificar si el clic está dentro de un CGPath sin éxito (creo que había algo mal en las coordenadas).
Entonces, mi pregunta aquí es cómo detectar el clic solo en la textura y no en la parte transparente. ¿O tal vez mi enfoque del problema está mal?
Cualquier consejo sería apreciado.
Editar: para cualquier persona interesada en la solución que finalmente utilicé, veami respuesta aqui