在视图控制器中添加火花粒子精灵

时间:2015-09-28 21:30:21

标签: ios swift animation uiviewcontroller scenekit

我基于.sks模板创建了一个spark粒子发射器。 我的应用程序是一个普通的应用程序(不是游戏)。当用户点击按钮时,我有一个新的视图控制器,以模态over fullscreen显示,以便我可以模糊背景。

在这个模式中,我创建了一个view并为其提供了一个SCNView类,请参见下图:

enter image description here

如何加载粒子.sks文件以在Particles视图上的viewController上执行动画?

更新 如何在视图控制器中加载SceneKit粒子系统?

3 个答案:

答案 0 :(得分:4)

如@mnuages所述,您可以使用.scnp文件而不是.sks,这是一个SceneKit粒子系统。

所以步骤是:

  1. 创建一个SceneKit粒子系统,我称之为ConfettiSceneKitParticleSystem.scnp
  2. 然后在您的艺术板中,选择视图并选择类SCNView,就像问题的打印屏幕一样
  3. UIViewController

    class SomeVC: UIViewController {

    @IBOutlet weak var particles: SCNView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
    
        let scene = SCNScene()        
        let particlesNode = SCNNode()
        let particleSystem = SCNParticleSystem(named: "ConfettiSceneKitParticleSystem", inDirectory: "")
        particlesNode.addParticleSystem(particleSystem!)
        scene.rootNode.addChildNode(particlesNode)
        particles.scene = scene
    }
    

    }

  4. Et Voila ......你有动画:)

答案 1 :(得分:3)

library(plyr) rbind.fill(lapply(list(jsn1, jsn2, jsn3, jsn4), as.data.frame)) id col1 col2 col3 1 id1 1 A 11 2 id2 2 B 12 3 id3 NA C 13 4 id4 3 <NA> 14 个文件是SpriteKit粒子系统。您还可以在Xcode中创建SceneKit粒子系统,它们是.sks个文件。

.scnp文件基本上是已归档的.scnp,可以使用SCNParticleSystem加载,并使用NSKeyedUnarchiver添加到您的场景中。

答案 2 :(得分:0)

创建SpriteKit粒子文件可能更容易(这就是您所做的)。您可以将其添加到UIViewController的主视图中。

将此添加到某处:

extension SKView {
 convenience init(withEmitter name: String) {
  self.init()

  self.frame = UIScreen.main.bounds
  backgroundColor = .clear

  let scene = SKScene(size: self.frame.size)
  scene.backgroundColor = .clear

  guard let emitter = SKEmitterNode(fileNamed: name + ".sks") else { return }
  emitter.name = name
  emitter.position = CGPoint(x: self.frame.size.width / 2, y: self.frame.size.height / 2)

  scene.addChild(emitter)
  presentScene(scene)
 }
}

要使用:

 override func viewWillAppear(_ animated: Bool) {

  view.addSubview(SKView(withEmitter: "ParticleFileName"))

}