presentationNode 的位置正在重置

Position of presentationNode is resetting

我首先使用 UIPinchGestureRecognizer 和 applyForce 向前或向后移动物理体。然后我使用 UIRotationGestureRecognizerSCNAction 来旋转它的节点。对象正在向前移动并旋转,但在旋转发生之前,对象跳回到(节点的)起始位置。 cameraNode1.presentationNode 的位置正在更新,但在使用第二个手势侦听器时正在重置。为什么?

func handlePinch(recognizer: UIPinchGestureRecognizer) {
    var dz = 5 * (1 - recognizer.scale) 
    self.cameraNode1.physicsBody?.applyForce(SCNVector3(0, 0, dz), impulse: true) 
    recognizer.scale = 1
}


func handleRotate(recognizer: UIRotationGestureRecognizer) {
    let rot = -recognizer.rotation
    recognizer.rotation = 0 
    let action = SCNAction.rotateByX(0, y: rot, z: 0, duration: NSTimeInterval(0))
    self.cameraNode1.runAction(action)
}

我通过更新渲染器委托方法中的位置解决了这个问题:

func renderer(renderer: SCNSceneRenderer, updateAtTime time:   NSTimeInterval) {
    self.cameraNode1.position = self.cameraNode1.presentationNode.position
    self.cameraNode1.rotation = self.cameraNode1.presentationNode.rotation
}