我遇到了这个答案,但答案对我来说并不清楚.有人可以提供一些示例代码吗?
创建一个SKNode并将其位置设置为旋转中心.将应该围绕该中心旋转的节点添加到中心节点.将子节点的位置设置为所需的偏移量(即半径,例如x 100).更改中心节点的旋转属性以使子节点围绕中心点旋转.
具体来说,“改变中心节点的旋转属性”到什么?
var centerNode: SKSpriteNode = SKSpriteNode(imageNamed: "image1") centerNode.position = CGPointMake(self.frame.width/2,self.frame.height/2) self.addChild(centerNode) var nodeRotateMe: SKSpriteNode = SKSpriteNode(imageNamged: "image2") nodeRotateMe.position = CGPointMake(self.frame.width/2 + 100,self.frame.height/2 + 100) centerNode.addChild(nodeRotateMe) // Change the rotation property of the center node to what?? centerNode.zRotation = ?
解决方法
你有几个选择:
1)您可以通过手动更改其zRotation属性,在SKScene的update:方法中随时间旋转centerNode.在每次更新调用时,您都必须缓慢地更改值:以实现逐渐旋转.
请注意,zRotation属性以弧度为单位,意味着180度旋转将等于pi(M_PI). SKScene努力更新:在60 FPS时,这意味着在5秒内旋转360度,每次更新调用时,您需要增加1/300度,这将是每次更新的1/150.
centerNode.zRotation = centerNode.zRotation + CGFloat(1.0/150.0 * M_PI)
当然,无法保证您的场景能够以60 FPS更新,因此您可能必须在更新中监视currentTime变量:并进行相应调整.
2)可能更好,您可以使用SKAction为您旋转centerNode.
let rotateAction = SKAction.rotateByAngle(CGFloat(2 * M_PI),duration: 5.0) centerNode.runAction(rotateAction)
请注意,旋转角度是弧度,而不是度.另请注意,如果您不想在那里显示图像,则centerNode不必是Sprite Node;它可能是一个普通的SKNode.