Detección de tocar dentro del cuadro delimitador (máscara alfa) de Sprite usando SpriteKit

Estoy empezando a aprender Swift2 para desarrollar iOS usando SpriteKit y parece que no puedo detectar si toqué una parte visible de mi Sprite.

Puedo encontrar qué nodo fue tocado así:

let touchedNode = self.nodeAtPoint(location) 

Pero esto detecta el toque en el sprite. Me gustaría detectar el toque en la parte "no transparente" del sprite solamente.

Intenté crear un PhysicsBody con un cuadro delimitador de máscara alfa y probar si el cuadro delimitador del nodo que seleccioné contiene la location del toque de esta forma:

 sprite.physicsBody = SKPhysicsBody.init(texture: sprite.texture!, size: sprite.size) sprite.physicsBody?.affectedByGravity = false if (touchedNode.containsPoint(location)){ 

Pero no ayudó. Si hago clic en una parte transparente de mi sprite, el evento aún se dispara.

La documentation dice: "Se crea un nuevo cuerpo de física que incluye todos los texels en la textura que tienen un valor alfa distinto de cero", entonces, ¿no debería funcionar?

Gracias por tu time.

PS: También traté de ser más generoso con mi umbral alfa, pero tampoco funcionó (en caso de que mi transparencia no fuera perfecta).


ACTUALIZAR:

Para agregar un poco más detalles, estoy construyendo un editor de niveles. Esto significa que voy a crear muchos nodos, dependiendo de lo que el usuario elija, y necesito poder seleccionar / mover / rotar / etc esos nodos. De hecho, estoy usando SKSpriteNodes, ya que mis imágenes PNG se agregan automáticamente en xcassette de esa manera. Decidí usar el cuadro delimitador de la Máscara Alfa de PhysicsBody, ya que este valor se muestra en el Editor de escenas (Xcode) cuando seleccionas un nodo, y cuando se selecciona, la Máscara alfa destaca exactamente la parte de mi Sprite que quiero poder detecta un toque dentro

Si estoy usando las ideas / técnicas equivocadas, dímelo. Esto es posible ya que solo estoy comenzando a usar Swift y SpriteKit.


ACTUALIZACIÓN 2

Pregunté a physicsWord (como se recomienda) para get el cuerpo físico correcto y obtuve el nombre del nodo adjunto así:

 let body = self.physicsWorld.bodyAtPoint(location) print(body?.node?.name) 

Pero esto sigue imprimiendo el nombre del nodo incluso si toco fuera del cuadro delimitador, lo que no tiene sentido para mí.

Gracias de todos modos por tu ayuda.

SKPhysicsBody no define los límites del SKNode . Puede realizar la comprobación de impacto consultando el SKPhysicsWorld de su escena llamando a bodyAtPoint . Eso devolverá SKPhysicsBody que está interesado.