我想在矩形内部制作粒子。
此代码有什么问题?它仅从发射器位置发射,而不是矩形中的随机位置。
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];
答案 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项目)。