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
文件及其替代品,请阅读此处。
如果您想设置3D火焰等现象,最好在场景图
中实现。为了获得更好的效果,可以使用2或3个具有不同参数的粒子系统对象。
为了更好地理解如何基于png样本
(源)设置3D火焰,请打开Apple Motion 5应用程序场景并单击检查器按钮。
![enter image description here](https://istack.dev59.com/vLFZW.webp)
然后,尝试在SceneKit的场景图中实现相同外观的火焰效果。