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