如何调整 SKEmitterNode 的大小?
How to resize an SKEmitterNode?
我只是想做一些在我看来非常简单的事情,那就是将发射器放入视图的整个背景中......然后我希望视图能够进行 aspectFill 和缩放等等,让发射器看起来像我所做的一切......
我不打算只缩放发射器。我希望对象保持正确的大小,但我希望发射器的区域发生变化......可以把它想象成 photoshop 中的 "canvas size"(不调整大小)选项..
我会使用此效果,例如,为整个场景添加雪或雨,或制作雪球精灵...
事情是,也许我只是没有找对地方,但似乎 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)
}
}
我需要再澄清一点。对于雪,我希望粒子在进入场景之前实例化,然后穿过场景落下,离开场景后才死亡,而不是随机出现在整个场景中,然后继续落下......我希望雪能占据整个场景。
你要找的是 particlePositionRange :
The range of allowed random values for a particle’s position.
你可以这样改:
emitterNode.particlePositionRange = CGVector(dx: dx, dy: dy)
dx
应该是发射器的宽度,dy
应该是高度。所以这可能是场景的大小(请注意,如果没有不同地指定,场景的默认大小为 1024x768)。
您可以使用粒子编辑器通过更改“位置范围”部分中的值来执行相同的操作:
我只是想做一些在我看来非常简单的事情,那就是将发射器放入视图的整个背景中......然后我希望视图能够进行 aspectFill 和缩放等等,让发射器看起来像我所做的一切......
我不打算只缩放发射器。我希望对象保持正确的大小,但我希望发射器的区域发生变化......可以把它想象成 photoshop 中的 "canvas size"(不调整大小)选项..
我会使用此效果,例如,为整个场景添加雪或雨,或制作雪球精灵...
事情是,也许我只是没有找对地方,但似乎 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)
}
}
我需要再澄清一点。对于雪,我希望粒子在进入场景之前实例化,然后穿过场景落下,离开场景后才死亡,而不是随机出现在整个场景中,然后继续落下......我希望雪能占据整个场景。
你要找的是 particlePositionRange :
The range of allowed random values for a particle’s position.
你可以这样改:
emitterNode.particlePositionRange = CGVector(dx: dx, dy: dy)
dx
应该是发射器的宽度,dy
应该是高度。所以这可能是场景的大小(请注意,如果没有不同地指定,场景的默认大小为 1024x768)。
您可以使用粒子编辑器通过更改“位置范围”部分中的值来执行相同的操作: