我正在使用ARKit - Scenekit来创建基于AR的应用程序。我能够成功放置3D模型。在用户点击时,我尝试使用rotateTo方法将特定节点旋转-120度。这应该理想地导致平滑的旋转动画。但相反,节点在对象周围旋转得非常快,最终以-120度结束。当我尝试通过拖放rotateto动作直接在场景编辑器中执行相同操作时,它可以正常工作。只有当我尝试以编程方式执行此操作时,它才会开始快速旋转,我甚至无法预览旋转。
以下是我用来旋转节点的代码,
let rotateAction = SCNAction.rotateTo(x: 0, y: 0, z: -120, duration: 2)
self.virtualObjectManager.lastUsedObject?.childNodes[0].childNodes[0].childNodes[0].runAction(rotateAction, completionHandler: {
})
节点的初始角度为(0,0,0)。我想把它改成(0,0,-120)。任何人请告诉我这里的问题是什么?
答案 0 :(得分:2)
scenekit编辑器使用度数,但SCNAction.rotateTo
期望以弧度为单位的角度。
let angle = CGFloat(-120.0 * .pi / 180)
let rotateAction = SCNAction.rotateTo(x: 0, y: 0, z: angle, duration: 2)