Я пытался создать приложение, которое сначала обнаружит самолет, а затем поместит поверх него 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 градусов, чтобы сделать его горизонтальным. Как сказано выше, когда я долго нажимаю на любой дочерний узел, он просто поднимается вверх, а некоторые направляются вправо или влево и не двигаются. Однако это несколько работает на узле родительской плоскости. Что может быть причиной? Пожалуйста, помогите ..
Спасибо.