2013-10-18 45 views
1

我有一個空SKScene需要被水平居中,所以我把它anchorPoint:SKScene規模+ anchorPoint =奇怪的行爲

self.anchorPoint = CGPoint(0.5f, 0); 

我還需要它的規模,每SpriteKit - Set Scale and Physics,所以我跑的動作就像這樣:

[self runAction:[SKAction scaleTo:0.5f duration:0.0f]]; 

我的問題是,當我檢測到觸摸,我得到的位置似乎很奇怪。 我使用通常的(locationInNode:self)方法檢測觸摸,並且我正在添加一個小的藍色方塊觸摸位置,但是當我觸摸設備的四個角落時,我看到一個框架是我的四分之一屏幕(正確),但移動到左邊一個看似隨意的量

這裏有一些事情我已經檢查:

  • 場景是在viewWillLayoutSubviews初始化,我知道它有正確的初始尺寸
  • 場景的scaleMode設置爲SKSceneScaleModeAspectFill,但我試過所有這些都無濟於事

回答

0

設置錨點作爲

self.anchorPoint = CGPoint(0.5f, 0); 

並設置場景縮放模式如ASPECT FIT,不填充方面。

SKSceneScaleModeAspectFit 
2

我一直在同一個問題上掙扎,但我想我終於明白了。你不應該規模現場(就像它提示,如果你嘗試setScale)。你應該它調整大小它。

試試這個:

myScene.scaleMode = SKSceneScaleModeAspectFill;

然後一邊變焦:

myScene.size = CGSizeMake(newX, newY);

+0

良好的提示。我發現,如果您重新調整場景,觸摸重新縮放場景的邊界之外的內容會被轉換爲新場景中的新座標。然而,調整大小後,這個問題就消失了。儘管我一開始就注意到將場景大小調整到更大的數字實際上減小了場景內容的大小。我想你在調整大小時會在同一個「音量」內佔用更多的像素,因此內部的所有內容都會相應減少。 – Thunk