【问题标题】:Using SK3DNode to show a SceneKit particle object in SpriteKit使用 SK3DNode 在 SpriteKit 中显示 SceneKit 粒子对象
【发布时间】:2015-02-14 03:01:25
【问题描述】:

我已经看到 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 精灵也不再可见。

我做错了什么?

感谢您的帮助, 斯蒂芬

【问题讨论】:

    标签: ios swift sprite-kit scenekit


    【解决方案1】:

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

    一些可能的解决方法,具体取决于您的应用中发生的其他情况:

    • 使用物理场使粒子看起来从中心点逃逸,这应该会给您类似的星空效果,尤其是当您将其与粒子尺度随时间的变化结合起来时。

      李>
    • 不要在 SpriteKit 视图中嵌入 SceneKit 场景,而是在 SceneKit 视图中嵌入一个 SpriteKit 场景。

    【讨论】:

    • 我会试试的。谢谢你的回答。
    • 在第二种方法中我想我不必使用 SK3DNode 对吧?
    猜你喜欢
    • 2021-05-27
    • 1970-01-01
    • 2017-04-01
    • 1970-01-01
    • 2019-03-29
    • 2013-09-24
    • 2018-05-01
    • 2014-01-10
    • 1970-01-01
    相关资源
    最近更新 更多