Как я могу получить доступ к индексам теста попадания?

Я пытаюсь добавить другой объект в сцену с помощью проверки попадания, и в настоящее время я могу добавить только один объект. Я хочу получить доступ ко второму, третьему и четвертому индексам в результатах моего теста на попадание, чтобы добавить эти объекты одним касанием.

Я пытался получить доступ через .indices, но он не совместим с UITouch.

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {

    if let touch = touches.first {

        let touchLocation = touch.location(in: sceneView)

        let results = sceneView.hitTest(touchLocation, types: .featurePoint)

        if let hitResult = results.first {
            let cubeScene = SCNScene(named: "art.scnassets/cube.scn")!

            if let cubeNode = cubeScene.rootNode.childNode(withName: "cube", recursively: true) {


                sceneView.scene.rootNode.addChildNode(cubeNode)

            }
        }
    }
}

Как мне это сделать? Я подумал о том, чтобы создать один SCNScene, передать его как массив, а затем загрузить все модели со сцены.


person Majid    schedule 12.07.2019    source источник
comment
возможно, вы можете сделать цикл for для массива результатов вместо того, чтобы просто проверять, содержит ли что-то первый элемент   -  person Samuel Chavez    schedule 12.07.2019


Ответы (1)


Как предложил Самуэль... пример

var hitTestOptions = [SCNHitTestOption: Any]()

    @objc func handleTap(recognizer: UITapGestureRecognizer)
        {
             let location: CGPoint = recognizer.location(in: gameScene)
             let hitResults: [SCNHitTestResult] = gameScene.hitTest(location, options: hitTestOptions)
             for vHit in hitResults
             {
              if(vHit.node.name?.prefix(5) == "Panel")
              {
               gameControl.selectPanel(vPanel: vHit.node.name!)
               return
              }
             }
            }
person Voltan    schedule 13.07.2019