我已经看到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精灵也不再可见了。
我做错了什么?
感谢您的帮助, 斯蒂芬
答案 0 :(得分:2)
SpriteKit渲染器不支持SceneKit的所有功能,特别是那些可能涉及粒子,景深和技术等多通道渲染的功能。这是probably a good bug to file。
一些可能的解决方法,具体取决于您应用中的其他内容:
使用物理场使粒子看起来从中心点逃逸,这应该会给你一个类似的星空效果,特别是如果你把它与粒子尺度随时间的变化耦合。
不是在SpriteKit视图中嵌入SceneKit场景,而是在SceneKit视图中嵌入SpriteKit场景。