我有一个应用程序,用户可以在其中编辑发射器节点并截取照片库的屏幕截图。在他们可以更改出生率,角度等内容的设置中。我允许他们更改发射器节点的颜色。
我在用:
node.particleColor = [SKColor redColor];
它不会改变粒子的颜色。
但是,当我NSLog
向它添加语句并询问它node.particleColor
返回了什么时1 0 0 1
,这是我所期望的,但节点永远不会改变颜色。
关于我可以做些什么来改变它的颜色的任何想法?
我有一个应用程序,用户可以在其中编辑发射器节点并截取照片库的屏幕截图。在他们可以更改出生率,角度等内容的设置中。我允许他们更改发射器节点的颜色。
我在用:
node.particleColor = [SKColor redColor];
它不会改变粒子的颜色。
但是,当我NSLog
向它添加语句并询问它node.particleColor
返回了什么时1 0 0 1
,这是我所期望的,但节点永远不会改变颜色。
关于我可以做些什么来改变它的颜色的任何想法?
嘿,我想我刚刚发现了这个问题。但是不确定您的代码是否不同。
对我来说,我有一个像这样创建的 SKEmitterNode
SKEmitterNode *explosion = [NSKeyedUnarchiver
unarchiveObjectWithFile:[[NSBundle mainBundle]
pathForResource:@"Explosion" ofType:@"sks"]];
然后改变它的颜色我这样做
explosion.particleColor = [SKColor redColor];
然后在我将混合因子设置为 1
explosion.particleColorBlendFactor = 1.0;
最后我将颜色序列设置为零(这是棘手的部分)
explosion.particleColorSequence = nil;
通过将颜色序列变为 nil,它不再忽略粒子颜色。不知道为什么它最初没有像参考资料所说的那样设置为零,但这就是为我解决的问题。希望这可以帮助!
您还必须设置colorBlendFactor
以将设置的颜色与粒子纹理混合:
node.colorBlendFactor = 1.0;