Swift SpriteKit – 逐渐增加旋转

我正在用@ nickfalk回答如何在Sprite工具箱中使用 Swift 快速旋转精灵,以及如何在精灵工具箱中旋转精灵。

我怎么调整这个以逐渐增加旋转速度到最大值,然后当点击屏幕时,它会逐渐减速并在相反的方向上进行X个时间量?

谢谢!

托比。

好的,以下(略有混乱的概念certificate)以一个固定的速度旋转一个精灵。 点击+按住它逐渐减慢旋转停止。 结束触摸立即返回到全速。

我已经build立了一个具有以下属性的场景: var sprite : SKSpriteNode?var shouldDecelerate = false

精灵设置了首选的细节,并有一个运行360度旋转的repeactActionForever-动作。 从这里它相当直接:

 override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) { shouldDecelerate = true } override func touchesEnded(touches: Set<NSObject>, withEvent event: UIEvent) { shouldDecelerate = false sprite?.speed = 1 sprite!.runAction(SKAction.speedTo(sprite!.speed, duration: 1/60)) } override func update(currentTime: CFTimeInterval) { if let sprite = sprite { if sprite.speed > 0 && shouldDecelerate { let newSpeed = max(sprite.speed - 0.1, 0) // we don't want a negative speed as it will reverse the rotation sprite.runAction(SKAction.speedTo(newSpeed, duration: 1/60)) } } } 

如果你想逐渐提高速度,你基本上只需要一个if与上面update()包含的逻辑相反的逻辑,哦,还应该删除touchesEnded()中的sprite?.speed = 1行。

如果你需要在速度不受旋转速度影响的情况下进行其他的移动操作,我build议你将Sprite挂钩到一个SKNode,并让其处理其他动作。