Система частиц SceneKit не отображается

#swift #scenekit #particles #particle-system

#swift #scenekit #частицы #система частиц

Вопрос:

Я пытаюсь добавить пламени в ракету, используя систему частиц в Scenekit. Файл частиц выглядит нормально, и я не получаю никаких ошибок, но частицы не отображаются при запуске приложения. Оба файла reactor.scnp и spark.png находятся в папке art.scnassets, а также в основной папке приложения.

   @objc func sceneTapped(recognizer: UITapGestureRecognizer) {
        let location = recognizer.location(in: sceneView)

        let hitResults = sceneView.hitTest(location, options: nil)
        if hitResults.count > 0 {
            let result = hitResults[0] as! SCNHitTestResult
            let node = result.node

            let physicsBody = SCNPhysicsBody(type: .dynamic, shape: nil)
            rocket.physicsBody = physicsBody
            let direction = SCNVector3(0, 3, 0)


            let rocketshipNode = rocket

            let reactorParticleSystem = SCNParticleSystem(named: "reactor.scnp", inDirectory: nil) //SCNParticleSystem(coder: "art.scnassets/reactor")
            print(reactorParticleSystem)
                let engineNode = rocket.childNode(withName: "node2", recursively: false)
            print(engineNode)

            // 3
            physicsBody.isAffectedByGravity = false
            physicsBody.damping = 0

            // 4
            let collider = [floor]
            reactorParticleSystem?.colliderNodes = collider as? [SCNNode]
            // 5
            engineNode?.addParticleSystem(reactorParticleSystem!)

            // 6
            let action = SCNAction.moveBy(x: 0, y: 0.3, z: 0, duration: 3)
            action.timingMode = .easeInEaseOut
            rocketshipNode!.runAction(action)



        }
    }
  

Комментарии:

1. нет родительского узла для engineNode. Корневой узел? .addChildNode(engineNode)

2. @E.Coms Я получаю сообщение об ошибке «Значение типа ‘SCNNode?’ не имеет элемента ‘rootNode'»

3. корневой узел взят из scnscene. Я имею в виду, что engineNode не имеет родительского элемента и будет удален при выходе из домена функции.

4. Я также получаю ноль для «Reactor ParticleSystem»

5. Это означает, что вы не получили файл «reactor.scnp».

Ответ №1:

Не уверен, в чем была проблема, но я воссоздал файл системы частиц, и, похоже, он работает нормально.