如何使节点围绕spritekit游戏项目中节点外的点旋转

时间:2015-06-11 02:31:42

标签: ios swift skspritenode

我遇到了这个答案,但答案对我来说并不清楚。有人可以提供一些示例代码吗?

创建一个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 个答案:

答案 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。

相关问题