我有这个节点,当我按住一个按钮时,我希望节点旋转得更慢。我将duration
参数从1更改为50,它仍以相同的速度旋转节点。我究竟做错了什么?
let rotateRate = (SKAction.rotateByAngle(CGFloat(-M_PI_2), duration: 50.0))
let repeatRotate = SKAction.repeatActionForever(rotateRate)
heroNode.runAction(repeatRotate)
答案 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")
}