尝试在代码内改变SKEmitterNode发射的粒子颜色

6

我有一个应用程序,用户可以编辑一个发射器节点并将截图保存到照片库中。在设置中,他们可以更改诸如出生率、角度等内容。我允许他们更改发射器节点的颜色。

我正在使用:

node.particleColor = [SKColor redColor];

而当我向其中添加NSLog语句并询问它的node.particleColor是什么时,它返回了1 0 0 1,这正是我所期望的,但节点从未改变颜色。

有任何想法可以改变它的颜色吗?


请问有人能解释一下这与Xcode IDE有什么关系吗???? - Popeye
这个答案可以在这里找到:https://dev59.com/H3jZa4cB1Zd3GeqPitMw#19818606 - ZeMoon
2个回答

11

嘿,我想我刚刚解决了这个问题。不确定你的代码是否不同。

对我来说,我有一个像这样创建的SKEmitterNode

SKEmitterNode *explosion = [NSKeyedUnarchiver
                                        unarchiveObjectWithFile:[[NSBundle mainBundle]
                                        pathForResource:@"Explosion" ofType:@"sks"]];

然后要改变它的颜色,我这样做

explosion.particleColor = [SKColor redColor];

然后在i中将混合因子设为1

explosion.particleColorBlendFactor = 1.0;

最后,我将颜色序列更改为 nil(这是棘手的部分)。

explosion.particleColorSequence = nil;

将颜色序列设置为 nil,可以使它不再忽略粒子的颜色。不确定为什么最初没有像参考资料中所说的那样将其设置为 nil,但这是我解决问题的方法。希望对您有所帮助!


你介意把你的代码发出来吗?我会尝试着去解决它。 - Chris Brasino
问题出在我的代码中。我没有将particleColorSequence设置为nil。 - Ramis
非常有用的代码片段,它可以帮助你节省很多时间去寻找 "particleColorSequence = nil" 这个问题。 - sakiM
另外,请确保粒子纹理颜色为白色;例如,如果是黑色,则不会与“particleColor”混合。 - hotdogsoup.nl

1

您还需要设置colorBlendFactor,以便将设置的颜色与粒子纹理混合:

node.colorBlendFactor = 1.0;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接