1 Reply
      Latest reply: Mar 14, 2018 9:29 AM by gebs RSS
      gabi_dusa_plan_net Level 1 Level 1 (0 points)



        I am having a problem with the scene kit nodes that are not touchable.

        My setup is the following:

        - I have a ARKit project with SceneKit

        - I am using ARSCNViewDelegate methods to detect when a AR image is recognized whitin a AR capture

        - when such image is detected I am placig a SpriteKit on top of this iamge, using a SCNPlane that has as "diffuse.contents" my custom spirte kit scene

        - everything is fine, but my scene does not get touch events; neither the nodes

        - the only way I can interact witht he nodes is through the ViewControllers touch callbacks like this:

             - I get a touch on the view controller

             - I get the location inside the Scene Kit view

             - then I use hitTest to get a result inside the scene kit

             - if I get a result on the hit testing, I get the coordinates inside the diffuse mapping channel and use them to get the nodes at that location

        My code is something like this:

        private func processTap(_ touch: UITouch) {

                let point = touch.location(in: getSceneView())

                guard let hitTestResult = getSceneView().hitTest(point, options: nil).first else { return }

                guard let channel = hitTestResult.node.geometry?.firstMaterial?.diffuse.mappingChannel else { return }     

                let coordinates = hitTestResult.textureCoordinates(withMappingChannel: channel)

                let mapScenePoint = CGPoint(x: coordinates.x * mapScene.size.width, y: coordinates.y * mapScene.size.height)

                mySpriteKitScene.processTap(for: mapScenePoint)



        Maybe there is something I could do to have my sprite scene touchable. Or its nodes.


        Any ideas?