title: HitTest for both Spritekit and Scenekit
body: <p>I have what seems to be a pretty basic <code>ViewController</code> with a <code>SCNView</code> which has an <code>overlaySKScene</code>.</p>
  
  <p>The issue I have is that I <strong>don't</strong> want the tap to be detected in the underlying <code>self.scene</code> (<code>gameScene</code> in the example below) if it was first detected in a SpriteKit node in the overlay scene.</p>
  
  <p>With the following, both scenes report that a hit occurred even though the tap happened on the SKOverlay scene node <code>actionButtonNode</code>.</p>
  
  <p><strong>ViewController</strong></p>
  
  <pre><code>import UIKit
  import SceneKit
  
  class ViewController: UIViewController {
    override func viewDidLoad() {
      super.viewDidLoad()
  
      sceneView = self.view as? SCNView
      gameScene = GameScene()
  
      let view = sceneView
      view!.scene = gameScene
      view!.delegate = gameScene as? SCNSceneRendererDelegate
      view!.overlaySKScene = OverlayScene(size: self.view.frame.size)
  
      let tapGesture = UITapGestureRecognizer(target: self, action: #selector(ViewController.handleTap(_:)))
      tapGesture.cancelsTouchesInView = false
      view!.addGestureRecognizer(tapGesture)
    }
  
    @objc func handleTap(_ sender:UITapGestureRecognizer) {
      let projectedOrigin = self.sceneView!.projectPoint(SCNVector3Zero)
      let taplocation = sender.location(in: self.view!)
      let opts = [ SCNHitTestOption.searchMode:1, SCNHitTestOption.ignoreHiddenNodes:0 ]
      let hitList = self.sceneView!.hitTest(taplocation, options: opts)
      if hitList.count &gt; 0 {
        for hit in hitList {
          print("hit:", hit)
        }
      }
    }
  }
  </code></pre>
  
  <p><strong>OverlayScene</strong></p>
  
  <pre><code>import UIKit
  import SpriteKit
  
  class OverlayScene: SKScene {
    var actionButtonNode: SKSpriteNode!
  
    override init(size: CGSize) {
      super.init(size: size)
  
      self.backgroundColor = UIColor.clear
  
      self.actionButtonNode = SKSpriteNode()
      self.actionButtonNode.size = CGSize(width: size.width / 2, height: 60)
      self.actionButtonNode.position = CGPoint(x: size.width / 2, y: 80)
      self.actionButtonNode.color = UIColor.blue
      self.addChild(self.actionButtonNode)
    }
  
    required init?(coder aDecoder: NSCoder) {
      super.init(coder: aDecoder)
    }
  
    override func touchesEnded(_ touches: Set&lt;UITouch&gt;, with event: UIEvent?) {
      let touch = touches.first
      let location = touch?.location(in: self)
      if self.actionButtonNode.contains(location!) {
        print("actionButtonNode touch")
      }
    }
  }
  </code></pre>