presentationNode 的位置正在重置
Position of presentationNode is resetting
我首先使用 UIPinchGestureRecognizer
和 applyForce 向前或向后移动物理体。然后我使用 UIRotationGestureRecognizer
和 SCNAction
来旋转它的节点。对象正在向前移动并旋转,但在旋转发生之前,对象跳回到(节点的)起始位置。 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
}
我首先使用 UIPinchGestureRecognizer
和 applyForce 向前或向后移动物理体。然后我使用 UIRotationGestureRecognizer
和 SCNAction
来旋转它的节点。对象正在向前移动并旋转,但在旋转发生之前,对象跳回到(节点的)起始位置。 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
}