SCNAction.rotate在使用ARKit以编程方式编写时开始旋转 - Scenekit

时间:2017-12-06 10:48:53

标签: scenekit ios11 swift4 xcode9 arkit

我正在使用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)。任何人请告诉我这里的问题是什么?

1 个答案:

答案 0 :(得分:2)

scenekit编辑器使用度数,但SCNAction.rotateTo期望以弧度为单位的角度。

let angle = CGFloat(-120.0 * .pi / 180)
let rotateAction =  SCNAction.rotateTo(x: 0, y: 0, z: angle, duration: 2)