Перемещение SCNNode в ARKit не работает должным образом - PullRequest
0 голосов
/ 12 марта 2019

Я пытался создать приложение, которое сначала обнаружит самолет, а затем поместит поверх него SCNPlane. Есть несколько узлов в качестве дочерних узлов для плоскости, и я хочу переместить их длинным нажатием пользователем с помощью распознавателя жестов длительного нажатия. Вот код:

@available(iOS 12.0, *)  
@objc func move( _ recognizer: UILongPressGestureRecognizer){  

    guard let recognizerView = recognizer.view as? ARSCNView else { return }  

    let touch = recognizer.location(in: recognizerView)  

    let hitTestResult = self.sceneView.hitTest(touch)  
    guard let modelNodeHit = hitTestResult.first?.node else { return }  

   if !(modelNodeHit.categoryBitMask == BodyType.dynamicObjects.rawValue) { return }  


    let hitResult = self.sceneView.hitTest(touch, types: .existingPlane)  
    if !hitResult.isEmpty {  
        guard let hitResult = hitResult.last else { return }  
        modelNodeHit.position = SCNVector3Make(hitResult.worldTransform.columns.3.x, hitResult.worldTransform.columns.3.y, hitResult.worldTransform.columns.3.z)  
    }  

} 

Самолет поворачивается на 90 градусов, чтобы сделать его горизонтальным. Как сказано выше, когда я долго нажимаю на любой дочерний узел, он просто поднимается вверх, а некоторые направляются вправо или влево и не двигаются. Однако это несколько работает на узле родительской плоскости. Что может быть причиной? Пожалуйста, помогите ..

Спасибо.

...