我正在使用ARKit开发基于AR的应用程序 . 我使用https://developer.apple.com/documentation/arkit/handling_3d_interaction_and_ui_controls_in_augmented_reality作为基础 . 使用此我可以移动或旋转整个虚拟对象 .

现在虚拟对象中有很多子节点 . 我想用用户的手指拖动/移动任何子节点,而不管轴是什么 . 子SCNode可能处于地面或浮动状态 . 我想移动用户手指所在的任何地方,无论轴是什么,或者与子节点的欧拉角无关 . 这甚至可能吗?

我按照下面的链接,但它只是沿着一个特定的轴移动 .

ARKit - Drag a node along a specific axis (not on a plane)

Dragging SCNNode in ARKit Using SceneKit

我尝试使用下面的代码,它根本没有帮助,

let tapPoint: CGPoint = gesture.location(in: sceneView)
    let result = sceneView.hitTest(tapPoint, options: nil)
    if result.count == 0 {
        return
    }
    let scnHitResult: SCNHitTestResult? = result.first
    movedObject = scnHitResult?.node //.parent?.parent

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