2016-03-26 20 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

还有一个问题......对于雪,我如何让粒子最初只出现在视图的上方,而不是随意地遍布视图? –

相关问题