CAEmitterLayer - режим рендеринга kCAEmitterLayerRectangle?

Я хочу сделать частицы внутри прямоугольника.

Что не так в этом коде? Он испускается только из положения эмиттера, а не из случайного положения в прямоугольнике.

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

person Fury    schedule 07.09.2012    source источник


Ответы (2)


kCAEmitterLayerRectangle не является допустимым значением для renderMode. Вместо этого вы должны использовать одно из этих значений

kCAEmitterLayerUnordered
kCAEmitterLayerOldestFirst
kCAEmitterLayerOldestLast
kCAEmitterLayerBackToFront
kCAEmitterLayerAdditive

Значение kCAEmitterLayerRectangle должно быть установлено как emitterShape, который по умолчанию равен kCAEmitterLayerPoint. Вот почему вы излучаете только из одной точки. Допустимые эммитерные фигуры:

kCAEmitterLayerPoint
kCAEmitterLayerLine
kCAEmitterLayerRectangle
kCAEmitterLayerCuboid
kCAEmitterLayerCircle
kCAEmitterLayerSphere

См. в документации для их значения.

person David Rönnqvist    schedule 07.09.2012

Как уже указывал Дэвид, используемое вами значение недопустимо для renderMode. Он используется в emitterShape. Это может быть очень неприятной ошибкой, потому что Xcode не выдает предупреждения, поскольку они одного типа (NSString). Такую ошибку можно легко не заметить, даже прочитав документация.

Используя такой инструмент, как Particle Playground (для эмиттеров UIKit) или Particle Designer (для эмиттеров cocos2d) может очень помочь, поскольку они допускают только значения, указанные в документации. .

Они оба позволяют настроить слой/ячейку эмиттера на вашем Mac. Particle Playground экспортирует эмиттер как объектный класс c для легкого импорта в ваш проект. Particle Designer экспортирует в формат обмена, который можно легко импортировать в правильные классы эмиттера cocos2d.

Полное раскрытие: я написал Particle Playground и не имею никакого отношения к Particle Designer (хотя мне очень нравится, я использую и рекомендую его для проектов cocos2d).

person vigorouscoding    schedule 01.03.2013