2016-05-04 8 views
1

私はまずUIPinchGestureRecognizerとapplyForceを使ってフィジックボディを前後に動かします。次に、UIRotationGestureRecognizerSCNActionを使用してノードをローテーションします。オブジェクトは前方に移動して回転していますが、回転が発生する前に、オブジェクトは(ノードの)開始位置にジャンプします。 cameraNode1.presentationNodeの位置は更新されていますが、2番目のジェスチャリスナを使用しているときはリセットされています。どうして?プレゼンテーションノードの位置がリセットされています

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) 
} 

答えて

1

私はレンダラデリゲートメソッドで位置を更新することによってそれを解決:

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

絶対に正しいです!ありがとうございました! –

関連する問題