使用SK3DNode在SpriteKit中显示SceneKit粒子对象

时间:2014-12-15 21:51:51

标签: ios swift sprite-kit scenekit

我已经看到SceneKit包含一个很好的3D星空粒子效果:

enter image description here

我尝试使用SK3DNode将此粒子效果添加到我的背景中。 这是我的代码:

    import SpriteKit
    import SceneKit

    class GameScene: SKScene {

    override func didMoveToView(view: SKView) {
...

      addStarfield()
    }



    func addStarfield() {
        // create a new scene
        let scene = SCNScene()

        // create and add a camera to the scene
        let cameraNode = SCNNode()
        cameraNode.camera = SCNCamera()
        scene.rootNode.addChildNode(cameraNode)

        // place the camera
        cameraNode.position = SCNVector3(x: 0, y: 0, z: 15)

        let ps = SCNParticleSystem(named: "Stars.scnp", inDirectory: "")
        scene.rootNode.addParticleSystem(ps)

        let starFieldNode = SK3DNode()
        starFieldNode.scnScene = scene
        starFieldNode.zPosition = -100
        self.addChild(starFieldNode)
    }
}

不幸的是,这不起作用。我只看到没有星星的灰色背景。我的普通SpriteKit精灵也不再可见了。

我做错了什么?

感谢您的帮助, 斯蒂芬

1 个答案:

答案 0 :(得分:2)

SpriteKit渲染器不支持SceneKit的所有功能,特别是那些可能涉及粒子,景深和技术等多通道渲染的功能。这是probably a good bug to file

一些可能的解决方法,具体取决于您应用中的其他内容:

  • 使用物理场使粒子看起来从中心点逃逸,这应该会给你一个类似的星空效果,特别是如果你把它与粒子尺度随时间的变化耦合。

  • 不是在SpriteKit视图中嵌入SceneKit场景,而是在SceneKit视图中嵌入SpriteKit场景。