2014-02-18 27 views
6

我有一個SKSpriteNode是父對象(即子對象)的滾動背景。 SKSpriteNode不會自行移動,它只是隨滾動背景一起移動。隨着背景移動,找到SKSpriteNode的絕對位置的最佳方法是什麼?找到小孩SKNode的絕對位置?

回答

10
CGPoint positionInScene = [self.scene convertPoint:self.position 
                fromNode:self.parent]; 

然而,convertPoint:fromNode:是相當昂貴的,特別是如果你在update方法使用它。我寧願只需要添加childNodex位置parentNodex位置:

CGFloat xPosition = self.position.x + self.parent.position.x; 
+0

謝謝你安德烈,我以前這樣做,你提到的添加,但試圖convertPoint:toNode:我會有更好的看,並讓它工作。最終,我會接受你的建議並使用添加,因爲我希望在更新中使用它。非常感激。 – fuzzygoat

+4

請不要說像「非常昂貴」的東西,沒有任何與事實(真實測量)的聯繫,或者至少提及與替代方案(平均情況或最差情況)相比,速度較慢的因素。事情是(不只是)初學者會經常接受這樣的建議,儘可能避免使用這些功能(不成熟的優化,根據傳聞不能少)。當然手動方式會更快一些,但我懷疑它幾乎在每個用例中都會有所不同。 – LearnCocos2D

+2

像這樣添加x位置不會考慮zRotation,但convertPoint會這樣做。 – nicopolyptic