CAEmitterLayer - kCAEmitterLayerRectangle渲染模式?

时间:2012-09-07 04:47:49

标签: iphone ios core-animation caemitterlayer

我想在矩形内部制作粒子。

此代码有什么问题?它仅从发射器位置发射,而不是矩形中的随机位置。

fireEmitter = [CAEmitterLayer layer];
[self.view.layer fireEmitter];
fireEmitter.emitterPosition = self.view.center;
fireEmitter.emitterSize =CGSizeMake(100, 100);
fireEmitter.renderMode = kCAEmitterLayerRectangle;
fireEmitter.emitterCells = [NSArray arrayWithObjects:fire, nil];

2 个答案:

答案 0 :(得分:2)

kCAEmitterLayerRectangle不是renderMode的有效值。相反,你应该使用其中一个值

kCAEmitterLayerUnordered
kCAEmitterLayerOldestFirst
kCAEmitterLayerOldestLast
kCAEmitterLayerBackToFront
kCAEmitterLayerAdditive

kCAEmitterLayerRectangle值应设置为默认为kCAEmitterLayerPoint的{​​{3}}。这就是为什么你只从一个点发出的。有效的emitterShapes是:

kCAEmitterLayerPoint
kCAEmitterLayerLine
kCAEmitterLayerRectangle
kCAEmitterLayerCuboid
kCAEmitterLayerCircle
kCAEmitterLayerSphere

请参阅emitterShape了解其含义。

答案 1 :(得分:0)

正如大卫已经指出你使用的价值对renderMode无效。它在emitterShape中使用。 这可能是一个非常令人沮丧的错误,因为Xcode没有给出警告,因为它们属于同一类型(NSString)。即使阅读了documentation,也很容易忽视这样的错误。

使用Particle Playground(对于UIKit发射器)或Particle Designer(对于cocos2d发射器)这样的工具可以提供很多帮助,因为它们只允许文档中指定的值。

它们都允许您在Mac上配置发射器层/单元。 Particle Playground将发射器导出为目标c类,以便在项目中轻松导入。 Particle Designer以交换格式导出,可以轻松导入到正确的cocos2d发射器类中。

完全披露:我写了粒子游乐场,我与粒子设计师没有任何关系(即使我非常喜欢,使用并推荐它用于cocos2d项目)。