0

我想在矩形内制作粒子。

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

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];
4

2 回答 2

2

kCAEmitterLayerRectangle不是 的有效值renderMode。相反,您应该使用这些值之一

kCAEmitterLayerUnordered
kCAEmitterLayerOldestFirst
kCAEmitterLayerOldestLast
kCAEmitterLayerBackToFront
kCAEmitterLayerAdditive

kCAEmitterLayerRectangle值应设置为emitterShape默认为 kCAEmitterLayerPoint. 这就是为什么你只从一个点发射。有效的emitterShapes 是:

kCAEmitterLayerPoint
kCAEmitterLayerLine
kCAEmitterLayerRectangle
kCAEmitterLayerCuboid
kCAEmitterLayerCircle
kCAEmitterLayerSphere

请参阅文档了解它们的含义。

于 2012-09-07T05:33:21.963 回答
0

正如大卫已经指出的那样,您使用的值对renderMode. 它用于emitterShape. 这可能是一个非常令人沮丧的错误,因为 Xcode 不会给您警告,因为它们属于同一类型 ( NSString)。即使阅读了文档,这样的错误也很容易被忽略。

使用诸如Particle Playground(用于 UIKit 发射器)或Particle Designer(用于 cocos2d 发射器)之类的工具会有很大帮助,因为它们只允许文档中指定的值。

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

完全披露:我编写了 Particle Playground,我与 Particle Designer 没有任何关系(尽管我真的很喜欢、使用并推荐它用于 cocos2d 项目)。

于 2013-03-01T08:48:32.660 回答