如何让节点以不同的序列/模式拍摄粒子?

问题描述 投票:0回答:1

我正在尝试建立一组16个节点来按顺序拍摄粒子以形成图案。

我能够同时激活它们,在不同的节点上使用不同的粒子系统,但我无法以顺序方式激活节点。粒子系统本身已经循环活动且不活动。

也许这是错误的方法,我应该使用Actions,但我不知道。

有一个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)
                }
            }
        }...
    }

而现在内存崩溃的应用程序......

ios swift nodes arkit particles
1个回答
0
投票

我无法弄清楚如何使用代码,尝试计时器和循环,并且没有任何工作,或由于内存问题不断崩溃。所以我最终通过在Blender中动画整个事件来解决,然后将所有正确的时间导入到xcode。工作得很完美。如果有人在将来发现这一点,我仍然想知道如何通过代码来做到这一点。谢谢!

© www.soinside.com 2019 - 2024. All rights reserved.