我對設置的槍口眩光有粒子效應。我目前使用的是低numParticlesToEmit來限制發射器短時間突發,並且每當我想要開始一個新的粒子爆發時,在發射器上執行resetSimulation()。重新啓動SKEmitterNode而不移除粒子
我遇到的問題是,resetSimulation()屏幕上刪除所有粒子,我經常需要創建粒子的新的突發之前,所以他們得到早期抹去以前的顆粒通常消失。
有一個乾淨的方式,而無需刪除顆粒已經在屏幕上再次啓動發射器?
我對設置的槍口眩光有粒子效應。我目前使用的是低numParticlesToEmit來限制發射器短時間突發,並且每當我想要開始一個新的粒子爆發時,在發射器上執行resetSimulation()。重新啓動SKEmitterNode而不移除粒子
我遇到的問題是,resetSimulation()屏幕上刪除所有粒子,我經常需要創建粒子的新的突發之前,所以他們得到早期抹去以前的顆粒通常消失。
有一個乾淨的方式,而無需刪除顆粒已經在屏幕上再次啓動發射器?
通常,粒子系統在SKEmitters中缺少一個特徵:持續時間。這控制了系統發出的時間。 ,我不認爲這在SKEmitter
儘管SCNParticleSystems
沒關係,周圍的工作是:
SKEmitters有numParticlesToEmit
屬性和particleBirthRate
。綜合起來,這些決定了粒子系統在關閉之前發射多長時間。
使用這些,因爲它可以創建你想要的東西,像一個槍口閃光和爆炸的方式發射的粒子的脈衝發射的控制。
我不知道這是否remvoes本身,當它達到此限制。如果沒有,你將不得不創建某種清除功能。因爲獲得所需效果的方式(屏幕上有多個槍口閃光)是copy()
的SKEmitter
。這非常有效,所以不要擔心開銷。
有上是假設的粒子移動到另一個節點,這樣當你重新發射SKEmitters一個targetNode
,以前的粒子仍停留。不幸的是,除了其他人已經知道如何讓它工作並且我錯過了它之外,這仍然是我所能說的。請記住這一點,以防萬一他們修好它。
順便說一句,SCNPlanes與粒子的SKScene將適用於需要在多個位置/視圖中需要兩個相同粒子的實例的問題。唯一的技巧,將SCNScene放入SKScene中。 – Confused
這需要sk3dnode已經知道它,但它是一個瘋狂的混亂渲染 – Knight0fDragon
喜來幫助未來的讀者,我用它來計算出發射的持續時間的代碼是這樣的:
let duration = Double(emitter.numParticlesToEmit)/Double(emitter.particleBirthRate) + Double(emitter.particleLifetime + emitter.particleLifetimeRange/2)
它完美對我來說
擴展:
extension SKEmitterNode {
var emitterDuration: Double {
return Double(numParticlesToEmit)/Double(particleBirthRate) + Double(particleLifetime + particleLifetimeRange/2)
}
}
是的,這很好。一個等待的快速SKAction序列然後removeFromParent可以很好地處理移除。 – Zek