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

我尝试使用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精灵也不再可见。

我做错了什么?

谢谢你的帮助,
斯特凡

最佳答案

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

一些可能的解决方法,取决于应用程序中发生的其他事情:

  • 使用物理场使粒子似乎从中心点逃逸,这应该给您类似的星空效果,尤其是当您将其与粒子比例随时间的变化耦合时。
  • 无需在SpriteKit视图中嵌入SceneKit场景,而是将SpriteKit场景嵌入SceneKit视图。
  • 08-26 19:19
    查看更多