2016-09-14 60 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

還有另外一種方式來達到目的。

製作兩個或多個粒子系統。

創建兩個或更多噪聲字段。

位掩碼將每個粒子系統都匹配到其中一個噪聲字段。

把噪聲場向下探底,在您想要的晃發生

調整噪聲場的味道。