我有通过图像检测触发的3D对象。我添加了按钮,以便用户可以在不同的视图中查看对象,例如左,右,上,下等。我的代码有一个缺陷,因为旋转点是从上一次触摸设置的。例如,如果您按向右,它将变为.pi / 2,然后当您按向左时,它将变为-.pi / 2,将其重置回前视图而不是左视图。如何设置原始的正面原点,以便每次按后旋转“重置”并转到相应的视图?谢谢。
@IBAction func leftSideRotate(_ sender: UIButton) {
let rotate = SCNAction.rotateBy(x: 0, y: -.pi/2, z: 0, duration: 0.5)
sender.isEnabled = false
toggleButton = sender
activeNode?.runAction(rotate,completionHandler: enableButtonn)
}
func enableButtonn (){
toggleButton?.isEnabled = true
}
@IBAction func upSole(_ sender: UIButton) {
let rotate = SCNAction.rotateBy(x: -.pi/2, y: 0, z: 0, duration: 0.5)
sender.isEnabled = false
toggleButton = sender
activeNode?.runAction(rotate,completionHandler: enableButtonnn)
}
func enableButtonnn (){
toggleButton?.isEnabled = true
}
答案 0 :(得分:0)
解决此问题的一种方法是,在对象被加载后立即将其保存在场景中。然后,使用rotateTo方法(而不是rotateBy)来实现所需的旋转。
示例:
let originalPosition = activeNode?.position
let rotate = SCNAction.rotateTo(x: originalPosition.x, y: (originalPosition.y - .pi/2), z: originalPosition.z, duration: 0.5)