微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

创建一个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.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐