在 Swift 中真实地停止旋转

Posted

技术标签:

【中文标题】在 Swift 中真实地停止旋转【英文标题】:Make rotation stop realisticly in Swift 【发布时间】:2017-12-05 20:47:35 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

感谢您的回答,但我不知道如何实现timingMode。能否顺便提供一些代码?【参考方案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

【讨论】:

以上是关于在 Swift 中真实地停止旋转的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 中形成旋转矩阵时需要帮助

如何使用按钮在一个轴上停止旋转并在新轴上开始旋转?

在 Swift 中:如何使用 uislider 值作为变量来设置旋转速度

Jquery旋转,在mouseenter上运行,在mouseout上停止

对于UINavigationController和UIViewController,在swift 4中禁用屏幕方向

在 MouseOver 中旋转缩略图并在 Mouseleave 中停止旋转