如何制作一个不断匀速运动的SCNNode?

Posted

技术标签:

【中文标题】如何制作一个不断匀速运动的SCNNode?【英文标题】:How to make a SCNNode that is constantly moving at a constant speed? 【发布时间】:2018-03-31 03:52:13 【问题描述】:

我正在使用 Swift Playgrounds 制作一个项目,并且我有一个 SCNPyramid,我希望它以恒定的速度不断移动。我该怎么做?

【问题讨论】:

欢迎来到 SO。请展示你做了什么/到目前为止你做了什么。 【参考方案1】:

您可以使用SCNAction 以恒定速度移动您的node,请查看以下代码以在X-axisY-axisZ-axis 中移动您的节点。

// Move your node in X-axis
func moveInXaxis() 
    let moveAction = SCNAction.moveBy(x: 2, y: 0, z: 0, duration: 1)
    pyramidNode?.runAction(moveAction, completionHandler: 
        if ShouldContinuteToMoveInXaxis  // Configure your `Bool` to check whether to continue to move your node or not.
            self.moveInXaxis()
        
    )


// Move your node in Y-axis  
func moveInYaxis() 
    let moveAction = SCNAction.moveBy(x: 0, y: 2, z: 0, duration: 1)
    pyramidNode?.runAction(moveAction, completionHandler: 
        if ShouldContinuteToMoveInYaxis  // Configure your `Bool` to check whether to continue to move your node or not.
            self.moveInYaxis()
        
    )


// Move your node in Z-axis
func moveInZaxis() 
    let moveAction = SCNAction.moveBy(x: 0, y: 0, z: 2, duration: 1)
    pyramidNode?.runAction(moveAction, completionHandler: 
        if ShouldContinuteToMoveInZaxis  // Configure your `Bool` to check whether to continue to move your node or not.
            self.moveInZaxis()
        
    )

谢谢。

【讨论】:

以上是关于如何制作一个不断匀速运动的SCNNode?的主要内容,如果未能解决你的问题,请参考以下文章

SceneKit - 在另一个 SCNNode 上添加 SCNNode

如何旋转具有固定锚点的 SCNNode?

如何围绕多个轴旋转 SCNNode?

有没有办法总是在别人面前画一个 SCNNode?

如何在不重置 SCNNode 位置的情况下重置 SCNNode 的 SCNPhysicsBody?

Swift - 如何更改SCNNode对象的Pivot