如何让SKNode遵循Sprite Kit中的SKShapeNode?

时间:2014-06-29 15:00:02

标签: ios objective-c sprite-kit

我有一条线,让我们说一个圆形的矩形,画在屏幕上(从CGPath绘制的SKShapeNode)。现在我想要一个节点跟随圆角矩形,顺时针或逆时针。我已经使用SKAction的followPath完成了这个:asOffset:orientToPath:duration:方法,如果节点从路径的起点开始,它可以正常工作。

问题是,节点可以放在圆角矩形的任何位置,当我按住一个按钮时,我希望它从它当前所在的点开始跟随矩形。当我释放按钮时,节点停在原处。现在,如果我停止节点并再次启动它,则从节点开始跟随一个新的圆角矩形。

有没有简单的方法来实现这个目标?

2 个答案:

答案 0 :(得分:0)

您似乎可以使用新引入的SKConstraint类(https://developer.apple.com/library/prerelease/ios/documentation/SpriteKit/Reference/SKConstraint_Ref/)。

如需快速介绍,请参阅WWDC2014的会话606:“SpriteKit中的新功能”。

这是调整精灵相对于另一个精灵的位置/旋转/距离的快速而简单的方法。

你真正需要的是

  + (instancetype)orientToNode:(SKNode *)node
                     offset:(SKRange *)radians

答案 1 :(得分:0)

这是一个难题。我可以想到两个解决方案:

  1. 每次按住时,为要跟随的节点构建一个新的CGPath,该节点从当前节点停止的点开始。

  2. 保留对您正在运行的SKAction对象的引用。当您停止在屏幕上按住时,不要停止操作,而是将其speed属性设置为0.0。这将有效地暂停动画。再次按下时,将速度设置回1.0。