ios - 如何让节点以不同的顺序/模式发射粒子?

标签 ios swift nodes arkit particles

我正在尝试设置一组 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)
                }
            }
        }...
    }

现在内存使应用程序崩溃......

最佳答案

我不知道如何用代码来做到这一点,尝试了计时器和循环,但要么没有任何效果,要么由于内存问题而不断崩溃。 所以我最终通过在 Blender 中对整个事情进行动画处理然后将该文件与所有正确的时间导入到 xcode 来解决。效果很好。 如果将来有人发现这个,我仍然想知道如何通过代码来做到这一点。 谢谢!

关于ios - 如何让节点以不同的顺序/模式发射粒子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55590265/

相关文章:

html - iOS 中的背景图片 repeat-x 不起作用

ios - 在给定字符串的数组中查找匹配项?

ios - 动态用户定义的运行时属性

swift - 在 Swift 中解析注册项目时出错

java - 我的循环链表能正常工作吗?

ios - 通过 UISwitch 启用推送通知

ios - 两行提示 - Swift

iphone - editingStyleForRowAtIndexPath 同时调用了三次。为什么?

python - 如何识别图中未连接的 sibling ?

c++ - 如何将MPxData传输到Maya的计算功能