在Swift中实现旋转停止

时间:2017-12-05 20:47:36

标签: ios swift swift3 sprite-kit rotation

我有一个square = SKSpriteNode(),当你触摸它时会旋转360°。我想再次触摸它时停止旋转。 现在我会让squareSKAction.rotate中旋转,但是我怎么能真实地停止旋转,这意味着我希望精灵旋转得越来越慢,直到它静止不动。

2 个答案:

答案 0 :(得分:2)

您是否尝试过缓解timingMode的曲线?如果您不喜欢此效果,则可以提供自己的自定义timingFunction。有几个网站可以在线浏览动画曲线。我喜欢this one.

答案 1 :(得分:2)

您可能需要考虑使用物理实体并施加角度力。

let square = SKSpriteNode(color:.white,size:CGSize(10,10))
if let physicsBody = SKPhysicsBody(rectangleOf:square.frame.size)
{
   physicsBody.isDynamic = true
   physicsBody.allowsRotation = true
   physicsBody.affectedByGravity = false
   physicsBody.angularDamping  = 0.1 //Adjust this to speed up or slow down the resistance of the spin 
   square.physicsBody = physicsBody
}

...

当你需要旋转时:

square.physicsBody!.angularImpulse(1) //Adjust this to change the amount of force applied to the spin