2014-06-29 38 views
1

我有一條線,讓我們說一個圓角的矩形,畫在屏幕上(從CGPath繪製的SKShapeNode)。現在我想要一個節點順時針或逆時針跟隨該圓角矩形。我已經用SKAction的followPath完成了這個工作:asOffset:orientToPath:duration:方法,如果節點從路徑的原點開始,它可以正常工作。如何讓SKNode在Sprite Kit中跟隨SKShapeNode?

問題是,節點可以放置在圓角矩形的任何地方,當我按住按鈕時,我希望它從它當前所在的點開始跟隨矩形。當我釋放按鈕時,節點停止它的位置。現在,如果我停止節點並重新啓動它,它會在節點處開始一個新的舍入矩形。

有沒有簡單的方法來實現這一目標?

回答

0

看來你可能會利用新引入的SKConstraint類(https://developer.apple.com/library/prerelease/ios/documentation/SpriteKit/Reference/SKConstraint_Ref/)。

想要快速瞭解一下WWDC2014的會話606:「SpriteKit有什麼新功能」。

這是真正快速和簡單的方法來調整精靈的位置/旋轉/距離相對於另一個精靈。

你到底需要的是

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

這可能是可以做到這一點,將檢查出來。 – ludvigeriksson

0

這是一個困難的問題。我能想到的兩種解決方案:

  1. 每次按下和保持時間,構建一個新的CGPath爲遵循其在您的節點當前停止點開始的節點。

  2. 保留對正在運行的SKAction對象的引用。當您停止在屏幕上按下時,而不是停止操作,請將speed屬性設置爲0.0。這將有效地暫停動畫。再次按下時,請將速度重新設置爲1.0。

+0

只要它一直朝着同一個方向移動,它就可以很好地工作。將速度設置爲-1似乎不起作用,所以我假設每次方向更改時都必須構建新的CGPath? – ludvigeriksson

+0

你可以使用' - [SKAction reversedAction]',但是這會在你開始走向另一個方向時開始。 – daltonclaybrook

+0

是的,我注意到了。所以我猜想唯一的選擇是每次構建一條新路徑或想出一個完全不同的方法。 – ludvigeriksson