我遇到了这个答案,但答案对我来说并不清楚。有人可以提供一些示例代码吗?
创建一个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 = ?
答案 0 :(得分:3)
您有几个选择:
1)您可以通过手动更改其centerNode
属性,在SKScene
的{{1}}方法中随时间旋转update:
。每次调用zRotation
时,您都必须缓慢更改值,以实现逐渐轮换。
请注意,update:
属性为弧度,意味着180度旋转等于pi(zRotation
)。 M_PI
在60 FPS下努力SKScene
,这意味着在5秒内旋转360度,每次更新调用时你需要增加1/300度,这将是1 /每次更新的第150次。
update:
当然,无法保证您的场景能够以60 FPS更新,因此您可能需要监控centerNode.zRotation = centerNode.zRotation + CGFloat(1.0/150.0 * M_PI)
中的currentTime
变量并进行相应调整。
2)可能更好,您可以使用SKAction为您旋转update:
。
centerNode
请注意,旋转角度是弧度,而不是度。另请注意,let rotateAction = SKAction.rotateByAngle(CGFloat(2 * M_PI), duration: 5.0)
centerNode.runAction(rotateAction)
如果您不想在那里显示图像,则无需为精灵节点;它可能是一个常规的SKNode。