2016-09-14 69 views
2

我有一个iOS 10 SpriteKit项目,我试图将从Xcode 8中的“雪”粒子模板创建的基本粒子发射器的粒子上的动作放入:SpriteKit SKEmitterNode particleAction不能在Xcode 8/iOS 10中工作

let snowPath = Bundle.main.path(forResource: "Snow", ofType: "sks")! 
snowEmitter = NSKeyedUnarchiver.unarchiveObject(withFile: snowPath) as! SKEmitterNode 
snowEmitter.position = CGPoint(x: 0, y: size.height/2) 
snowEmitter.particlePositionRange = CGVector(dx: size.width, dy: 0) 
snowEmitter.particleAction = SKAction.scale(to: 3, duration: 3) 
effectLayer.addChild(snowEmitter) // effectLayer is a SKNode on the scene 

发射器的工作原理应该如此,但无论我设置particleAction它被忽略。有没有其他人经历过这个?

更新:不适用于Xcode 7和iOS 9。

+1

snowEmitter.runaction有效吗? –

+0

1个粒子是否活着3秒见证这种效果? – Knight0fDragon

+0

这篇文章http://stackoverflow.com/questions/39298383/background-animation-with-depth-in-spritekit/39317134#39317134有粒子操作在ios 9上工作,所以错误必须在你的一端 – Knight0fDragon

回答

0

我认为这仍然可能是一个剩余的iOS 9错误,而不是100%确定。我只是尝试自己,我无法让它工作。

SKEmitterNode particleAction not working iOS9 Beta

你能不能达到在右边的检查,直接使用snow.sks颗粒设置同样的效果?

您可能正在查看†软管的两个设置及其子集。

1)粒子的生命周期(开始,范围)

2)粒子比例(开始,范围,速度)

此制品具有的每个设置的一个很好的描述。

http://www.techotopia.com/index.php/An_iOS_8_Sprite_Kit_Particle_Emitter_Tutorial#Particle_Birthrate

作为一般的尖

你的代码是不是在第2行非常安全的,因为你强迫解开雪粒子。 如果您更改了名称并忘记了名称,或者文件损坏了,您将崩溃。你应该将其更改为这样的事情

guard let snowPath = Bundle.main.path(forResource: "Snow", ofType: "sks") else { return } // or if let snowPath = ... 
snowEmitter = NSKeyedUnarchiver.unarchiveObject(withFile: snowPath) as? SKEmitterNode 
... 

您也可以直接这段代码有很多通过简单的说,这个地方你定义你snowEmitter财产

let snowEmitter = SKEmitterNode(fileNamed: "Snow") 

这将返回一个可选的为好,就像你的旧代码。比你的方法,您可以设置发射器说这样的事情(不使用!)

if let snowEmitter = snowEmitter { 
    snowEmitter.position = 
    ... 
} 

希望这有助于

+0

操作工作,请参阅http://stackoverflow.com/questions/39298383/background-animation-with-depth-in-spritekit/39317134#39317134 – Knight0fDragon

+0

@ crashoverride777粒子设置是不够的。我希望粒子在向屏幕底部移动时左右摆动,因此速度,加速度和角度不够。我意识到代码是不安全的,它只是用于快速实验。 –

+1

@ Knight0fDragon该示例显示了particleAction _not_工作。他们应该旋转,但不要。我在Xcode 8和iOS 10中试过这个代码,并且particleAction没有任何作用。 –

0

还有另外一种方式来达到目的。

制作两个或多个粒子系统。

创建两个或更多噪声字段。

位掩码将每个粒子系统都匹配到其中一个噪声字段。

把噪声场向下探底,在您想要的晃发生

调整噪声场的味道。