SpriteKit 粒子实现
如果您想在 3D 场景中使用 2D 粒子,在 SceneKit 中显示 SpriteKit 场景有两种常规方式。第一种方法是将 SKScene 指定为 SceneKit 几何体的材质:
// 2D scene
let skScene = SKScene()
guard let emitter = SKEmitterNode(fileNamed: "sparks.sks")
else { return }
emitter.position = CGPoint(x: 10, y: 25)
emitter.targetNode = skScene
skScene.addChild(emitter)
// 3D scene
let plane = SCNPlane(width: 5, height: 5)
plane.materials.first?.diffuse.contents = skScene
let planeNode = SCNNode(geometry: plane)
sceneView.scene.rootNode.addChildNode(planeNode)
第二种方式——将SKScene分配给SceneKit的虚拟周边环境。
sceneView.scene.lightingEnvironment.contents = skScene
SceneKit 粒子实现
在 SceneKit 中使用粒子的常规方式是其原生粒子系统:
let particleSystem = SCNParticleSystem()
particleSystem.birthRate = 50
particleSystem.particleSize = 0.5
particleSystem.particleLifeSpan = 10
particleSystem.particleColor = .green
let particlesNode = SCNNode()
particlesNode.addParticleSystem(particleSystem)
sceneView.scene.rootNode.addChildNode(particlesNode)
P。 S.
关于已弃用的预配置 SCNP 文件及其替换读取 HERE。
如果你想设置像 3D 火焰这样的现象,最好的方法是在Scene graph 中进行。为了获得更好的结果,请使用 2 或 3 个具有不同参数的粒子系统对象。
为了更好地了解如何根据png samples(来源)设置 3D 火焰,请打开 Apple Motion 5 应用场景并点击 Inspector 按钮。
然后,尝试在 SceneKit 的场景图中实现具有相同外观的火焰。