如何旋转对象并在SCNScene中替换该对象?

时间:2019-04-05 06:25:26

标签: ios swift arkit

目前,我正在制作有关ARKit的演示。我正在使用两个3D对象.dae文件。还实现了该对象的旋转,但是在这里我遇到一个问题,因为对象连续旋转,我们如何只旋转一次?

如何替换屏幕上的那些对象?

我还提到了以下代码。

func addAction(node:SCNNode) {
    let rotateOne = SCNAction.rotateBy(x: CGFloat(Float.pi), 
                                       y: 0, 
                                       z: 0, 
                                duration: 5.0)
    node.runAction(rotateOne)
}

1 个答案:

答案 0 :(得分:0)

实际上,您的函数只会旋转一个对象。主要问题是,您在哪里调用此方法?请确保您没有在 renderer(_:updateAtTime:)或类似名称中调用此方法,否则您的方法将称为无穷大。
如果要在动画后替换此对象,则可以对closure使用action。
例如:

func addAction(node:SCNNode) {
    let rotateOne = SCNAction.rotateBy(x: CGFloat(Float.pi), y: 0, z: 0, duration: 5.0)
    node.runAction(rotateOne) {
        node.removeFromParentNode()
        yourRootNode.addChildNode(newNode)
    }
}

希望有帮助。