Создайте круг частиц с помощью CAEmitterLayer

Я пытаюсь использовать UIKit CAEmitterLayer, чтобы дать пользователю обратную связь, когда он касается экрана. Что я хотел бы сделать, так это круг из частиц, который со временем растет.

Я думал, что если я настрою частицы с одинаковой скоростью (без диапазона скоростей), все частицы будут двигаться от центральной точки с одинаковой скоростью и, следовательно, нарисуют круг.

Однако похоже, что скорость по-прежнему случайная, в диапазоне от 0 до скорости, которую я выбрал в качестве скорости.

Есть ли способ заставить скорость быть точным значением?

    dragEmitter.emitterPosition = CGPointMake(50, 50);
dragEmitter.emitterSize = CGSizeMake(1, 1);

CAEmitterCell* fire = [CAEmitterCell emitterCell];
fire.birthRate = 10;
fire.lifetime = 0.7;
fire.lifetimeRange = 0;
fire.color = [[UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0] CGColor];
fire.contents = (id)[[UIImage imageNamed:@"Particles_fire.png"] CGImage];
[fire setName:@"fire"];

fire.velocity = 50;
fire.velocityRange = 0;
fire.emissionRange = 2*M_PI;
fire.emissionLatitude = 0;
fire.emissionLongitude = 0;

Спасибо за помощь!


person Antoine Pastor    schedule 19.10.2012    source источник


Ответы (1)


Честно говоря, трудно представить на 100% ту же картину системы частиц, которую вы хотите, но я думаю, что она близка к тому, что было нужно несколько месяцев назад. Пожалуйста, попробуйте следующую настройку для ячейки эмиттера или попробуйте поэкспериментировать со значениями, основанными на настройке ниже:

    .
    .
    emitter.emitterPosition = CGPointMake(...);
    emitter.renderMode = kCAEmitterLayerBackToFront;

    CAEmitterCell* star = [CAEmitterCell emitterCell]
    star.emissionLongitude = M_PI*2;
    star.emissionRange = M_PI*2;
    star.lifetime = 2.5;
    star.birthRate = 20;
    star.velocity = 120;
    star.velocityRange = 20;
    star.color = [UIColor colorWithRed:49.0/255.0 green:168.0/255.0 blue:181.0/255.0 alpha:0.6].CGColor;
    star.contents = (id)image.CGImage;
    star.redRange = 0.1;
    star.greenRange = 0.1;
    star.blueRange = 0.1;
    .
    .
person Nenad M    schedule 19.10.2012
comment
Я больше пытаюсь сделать что-то вроде волнового эффекта. Концентрические круги, которые со временем становятся больше. - person Antoine Pastor; 19.10.2012