Я пытаюсь создать группу из 16 узлов для последовательной съемки частиц для формирования шаблонов.
Я могу активировать их все сразу, с разными системами частиц на разных узлах, но я не могу заставить узлы активировать последовательно.
Сама система частиц уже работает активно и неактивно.
Может быть, это неправильный подход, и я должен использовать Действия, но я не знаю.
Есть while (self.fWorksequence == 2)
, вызывающий Sequence2()
, который активирует частицы на нужных мне узлах, но это все одновременно. Мне нужно, чтобы они запаздывали: узел f1 срабатывает, подождите 1 секунду, узлы f2 и f16 стреляют одновременно, подождите еще секунду, узлы f3 и f15 срабатывают одновременно.
var fWCycle = 1
func Sequence2() {
if self.fWCycle == 1 {
sceneView.scene.rootNode.enumerateChildNodes { (node, _) in
if node.name == "f1" {
let fWorkBoom = self.launchFWork1(color: UIColor.red)
node.addParticleSystem(fWorkBoom)
}
}
} else if self.fWCycle == 31 {
sceneView.scene.rootNode.enumerateChildNodes { (node, _) in
if node.name == "f2" {
let fWorkBoom = self.launchFWork1(color: UIColor.red)
node.addParticleSystem(fWorkBoom)
}
if node.name == "f16" {
let fWorkBoom = self.launchFWork1(color: UIColor.red)
node.addParticleSystem(fWorkBoom)
}
}
}
...
//check the cycle stage
if self.fWCycle <= 100 {
self.fWCycle += 1
} else if self.fWCycle > 600 {
self.fWorkSequence = 1
}
}
* Редактировать
пробовал с
func Sequence2() {
timer = Timer.scheduledTimer(timeInterval: 2.0, target: self, selector: #selector(timerAction), userInfo: nil, repeats: true)
}
, а затем
var timer = Timer()
var nodeCounter = 0
@objc func timerAction() {
self.nodeCounter += 1
if self.nodeCounter == 1 {
self.sceneView.scene.rootNode.enumerateChildNodes { (node, _) in
if node.name == "f1" {
let fWorkBoom = self.launchFWork1(color: UIColor.red)
node.addParticleSystem(fWorkBoom)
}
}
}...
}
А теперь память вылетает из приложения ...