在ARKit中移动SCNNode不能按预期工作

时间:2019-03-12 10:10:18

标签: swift arkit hittest

我试图制作一个首先检测飞机然后将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度以使其成为水平面。如上所述,当我长按任何子节点时,它只会上升,而向右或向左一些却不会真正移动。但是,这在父平面节点上有些起作用。可能是什么原因?请帮忙。

谢谢。

0 个答案:

没有答案