如何让节点以较慢的持续时间旋转?

时间:2016-05-17 04:38:35

标签: ios xcode swift sprite-kit rotation

我有这个节点,当我按住一个按钮时,我希望节点旋转得更慢。我将duration参数从1更改为50,它仍以相同的速度旋转节点。我究竟做错了什么?

let rotateRate = (SKAction.rotateByAngle(CGFloat(-M_PI_2), duration: 50.0))
let repeatRotate = SKAction.repeatActionForever(rotateRate)
heroNode.runAction(repeatRotate)

2 个答案:

答案 0 :(得分:3)

创建操作后,您无法修改其持续时间参数...因此,您无法以预期的方式影响操作的速度。但是你有几个选择:

  • 重新创建操作(您可能希望使用密钥运行此操作)

  • 改变该动作的速度:

    if let action = node.actionForKey("aKey"){
    
       action.speed = 1.5
    }
    

可能还有一些,但这会让人知道发生了什么。

答案 1 :(得分:2)

我会首先推荐旋风的选项,这应该在99%的时间内使用,但是如果不能选择改变速度,只需在相反的方向上以较小的间隔应用另一个rotateBy动作。

let rotateRate = (SKAction.rotateByAngle(CGFloat(-M_PI_2), duration: 50.0))
let repeatRotate = SKAction.repeatActionForever(rotateRate)
heroNode.runAction(repeatRotate)


...
func slowDown()
{
    let rotateRate = (SKAction.rotateByAngle(CGFloat(M_PI_4), duration: 50.0))
    let repeatRotate = SKAction.repeatActionForever(rotateRate)
    heroNode.runAction(repeatRotate, forKey:"slowdown")

}

func removeSlowDown()
{
    heroNode.removeActionForKey("slowdown")
}