iOS Swift SceneKit中particleColor属性无法为复制后的粒子系统的粒子图片着色的问题求助
iOS Swift SceneKit中particleColor属性无法为复制后的粒子系统的粒子图片着色的问题求助
大家好,我最近在尝试用SceneKit创建带颜色的粒子效果,逻辑看起来都通顺,但就是死活达不到预期效果,想请各位大佬帮忙排查下问题😭
我写的核心代码如下,原本想通过particleColor把白色星星粒子图染成蓝色,但运行后粒子始终是纯白色,完全没被着色:
let particleSystem = SCNParticleSystem() particleSystem.particleSize = 1.0 // 放大粒子尺寸 particleSystem.particleImage = UIImage(named: "star_07.png") // 目标是给这张白色粒子图着色 particleSystem.particleColor = UIColor(red: 0.0, green: 0, blue: 1.0, alpha: 1.0) particleSystem.particleAngularVelocity = 100.0 particleSystem.particleAngleVariation = 200.0 particleSystem.emitterShape = SCNBox( width: CGFloat(1.0), height: CGFloat(1.0), length: CGFloat(1.0), chamferRadius: 0.0 ) particleSystem.birthDirection = .surfaceNormal particleSystem.particleVelocity = 0.4 particleSystem.particleVelocityVariation = 0.1 particleSystem.particleLifeSpan = 1.2 particleSystem.particleLifeSpanVariation = 0.1 particleSystem.emissionDuration = 0.1 particleSystem.blendMode = .additive particleSystem.birthRate = 100 particleSystem.birthLocation = .volume particleSystem.particleSizeVariation = 0.1 let debugParticleNode = SCNNode() guard let particleCopy = particleSystem.copy() as? SCNParticleSystem else { print("Failed to copy particle system") return } debugParticleNode.addParticleSystem(particleCopy) scene.rootNode.addChildNode(debugParticleNode)
根据官方文档的描述,particleColor就是用来给particleImage提供的纹理进行着色或明暗调整的,但实际运行完全不生效。我已经试了好几种排查方法,都没解决:
- 把混合模式
blendMode从.additive改成.alpha,粒子还是白色; - 添加
particleColorVariation属性,设置全范围的颜色变化空间,结果依旧没效果:particleSystem.particleColorVariation = SCNVector4(1.0, 1.0, 1.0, 0.0) - 换了另一张透明背景的白色粒子PNG图,问题仍然存在。
我的运行环境是Xcode + iPhone模拟器(iOS 18.5),实在摸不着头脑了,有没有遇到过类似问题的朋友给指点下方向?
内容来源于stack exchange
相关产品推荐
相关产品推荐

