2014-02-17 60 views
1

是否有可能改變已經發射的粒子的速度? SKEmitterNode具有particleSpeed屬性,但這僅適用於未來將要發射的粒子。SKEmitterNode將粒子速度改變爲已經發射的粒子

舉一個例子,假設我們正在構建一個飛船模擬器。想象一下在星空之上呈現的太空船。星空是通過使用SKEmitterNode呈現的粒子文件創建的。通過這個模擬飛船永遠不會改變位置。 SKEmitterNode由在負x方向以恆定速度10移動的粒子組成。爲了模擬宇宙飛船加速,能夠改變已經發射的粒子的速度是很好的。就目前而言,如果粒子的速度發生變化,那麼已經發射的粒子將以比速度變化後正在發射的粒子慢的速度進行。

一種解決方案是定義一個粒子系統,該粒子系統在0速度和0加速度範圍內(例如100 x 100)發射粒子。此粒子系統將以低zPosition值呈現以保留在背景中。爲了模擬宇宙飛船運動,SKEmitterNode的x位置將相對於飛船的速度而改變。更多的SKEmitterNodes被添加到場景中,然後滾動到視圖中,因爲舊的SKEmitterNodes會滾降並被刪除。

我已經測試過該解決方案,它的工作原理,但我很好奇,如果任何人有一個更優雅的解決方案。

+0

之間轉換據我所知,這是不可能的。從文檔:「粒子精靈由Sprite Kit私人擁有 - 您的遊戲無法訪問生成的精靈。」 - (https://developer.apple.com/library/ios/documentation/SpriteKit/Reference/SKEmitterNode_Ref/Reference/Reference.html) – DoctorClod

+1

你絕對是對的,但我希望SKEmitterNode(這些粒子的擁有者)可以有這種類型的東西的一些選擇。這使得這些粒子系統在這方面顯得非常有限。 – aust

回答

0

您可以創建第二個SKEmitterNode,其風格相同,速度更快。然後運行SKActionSKAction sequence以在2.