SCNAction.rotateTo 使用 ARKit - Scenekit 以编程方式编写时开始旋转
SCNAction.rotateTo starts spinning when written programmatically using ARKit - Scenekit
我正在使用 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)。谁能告诉我这是什么问题?
场景包编辑器使用度数,但SCNAction.rotateTo
需要以弧度为单位的角度。
let angle = CGFloat(-120.0 * .pi / 180)
let rotateAction = SCNAction.rotateTo(x: 0, y: 0, z: angle, duration: 2)
我正在使用 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)。谁能告诉我这是什么问题?
场景包编辑器使用度数,但SCNAction.rotateTo
需要以弧度为单位的角度。
let angle = CGFloat(-120.0 * .pi / 180)
let rotateAction = SCNAction.rotateTo(x: 0, y: 0, z: angle, duration: 2)