Sprite kit SpriteKit SKEmitterNode粒子过滤在Xcode 8/iOS 10中不工作

Sprite kit SpriteKit SKEmitterNode粒子过滤在Xcode 8/iOS 10中不工作,sprite-kit,ios10,xcode8,skemitternode,Sprite Kit,Ios10,Xcode8,Skemitternode,我有一个iOS 10 SpriteKit项目,我试图对基本粒子发射器中的粒子执行操作,该发射器是由Xcode 8中的“雪”粒子模板创建的: let snowPath = Bundle.main.path(forResource: "Snow", ofType: "sks")! snowEmitter = NSKeyedUnarchiver.unarchiveObject(withFile: snowPath) as! SKEmitterNode snowEmitter.position = CG

我有一个iOS 10 SpriteKit项目,我试图对基本粒子发射器中的粒子执行操作,该发射器是由Xcode 8中的“雪”粒子模板创建的:

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
发射器正常工作,但不管是哪种
SKAction
I设置的
particleAction
都会被忽略。还有其他人经历过吗


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

我认为这可能仍然是iOS 9遗留的错误,不是100%确定。我只是尝试了一下,但我不能让它也起作用

是否可以直接在右侧检查器的snow.sks中使用粒子设置来实现相同的效果

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

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

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")
这将返回一个可选的,就像您的旧代码一样。而不是在你设置发射器的方法中说这样的话(不要使用!)


希望这对实现目标有所帮助

创建两个或多个粒子系统

创建两个或多个噪波场

位掩码将每个粒子系统与一个噪波场匹配

将噪波场放在底部,在您希望发生摆动的位置


调整噪声场以适应口味。

snowEmitter.runaction有效吗?1个粒子是否保持活动状态3秒以见证此效果?此帖子中的粒子操作在ios 9上有效,因此错误必须在您的计算机上end@SimonePistecchia我不想在发射器上运行操作,我想通过在发射器上设置particleAction在每个粒子上运行它们。@knl否Xcode 8.2.1和iOS 10.2仍然存在问题。操作正常,请参阅@crashoverride777粒子设置不够。我想让粒子在向屏幕底部移动时左右摇摆,所以速度、加速度和角度都不够。我意识到代码是不安全的,它只是为了一个快速的实验。@Knight0fDragon那个例子显示粒子过滤不起作用。它们应该是旋转的,但不能。我在Xcode 8和iOS 10中试过这段代码,但粒子过滤没有效果。@bjornruud。你在说什么。它在旋转。你怎么解释星星的纹理changing@Knight0fDragon这是代码的闪烁部分,设置在发射器的particleColorSequence上。它们好像没有在我眼前旋转?无论如何,它们肯定不是使用与我在Xcode 8中创建的项目中完全相同的代码旋转的。
if let snowEmitter = snowEmitter {
    snowEmitter.position = 
    ...
}