2016-03-26 19 views
5

我只是想做一些對我來說看起來非常簡單的事情,就是讓一個發射器進入視圖的整個背景中......然後我希望視圖能夠縱向填充和縮放等等,從而允許發射器看看我是幹什麼的...如何調整SKEmitterNode的大小?

我不想只是縮放發射器。我想要的對象保持正確的大小,但我希望發射器的區域改變...想像它在Photoshop中的「畫布大小」(不調整大小)選項..

我會用這個效果,例如,爲整個場景添加雪或雨,或使雪球精靈...

事情是,也許我只是沒有在正確的地方看,但似乎任何大小的屬性一個SKEmitterNode是隻讀的...我做錯了什麼?

這裏有一些代碼,其中由此產生的發射器只是在視圖中間的一個小矩形。

override func viewDidLoad() { 
    super.viewDidLoad() 

    if let scene = GameScene(fileNamed:"GameScene") { 
     // Configure the view. 
     let skView = self.view as! SKView 
     skView.showsFPS = true 
     skView.showsNodeCount = true 
     if let emitter = SKEmitterNode(fileNamed: "Bokeh") { 
      emitter.position = view.center 
      scene.addChild(emitter) 
     } 
     /* Sprite Kit applies additional optimizations to improve rendering performance */ 
     skView.ignoresSiblingOrder = true 

     /* Set the scale mode to scale to fit the window */ 
     scene.scaleMode = .AspectFill 
     skView.presentScene(scene) 
    } 
} 

我需要澄清一點。對於雪,我希望粒子在進入場景之前進行實例化,然後在場景中落下,並在場景離開後纔會死亡,而不是隨機出現在整個場景中,然後繼續倒下......我想讓雪花佔據整個場景。

回答

6

你要找的是所謂particlePositionRange

一個粒子的位置允許的隨機值的範圍。

你可以這樣改變它:

emitterNode.particlePositionRange = CGVector(dx: dx, dy: dy) 

dx應該是你的發射器的寬度,dy高度。所以這可能是一個場景的大小(注意,如果沒有指定不同的話,場景的默認大小是1024x768)。

同樣的事情可以做在位置範圍部分改變值使用粒子編輯器:

position range

+0

所以我在視圖的中心的發射器的位置,並設置的範圍爲寬度和身高?這聽起來不那麼糟糕。 :-) –

+0

完全工作,是這樣一個救濟知道和理解:-)非常感謝! –

+0

還有一個問題......對於雪,我如何讓粒子最初只出現在視圖的上方,而不是隨意地遍佈視圖? –

相關問題