CAEmitterCell доступ ко всем частицам

У меня работает CAEmitterCell, но я хочу, чтобы частицы замедлялись и останавливались. Кажется, если бы у меня был доступ ко всем частицам, я мог бы просто уменьшить их скорость и / или ускорение до 0, и они бы прекратили движение.

Я попробовал что-то вроде этого:

NSArray *cells = [_layerEmitter emitterCells];
    for (CAEmitterCell* cell in cells) {
        ...

но это не сработало, так как у моего layerEmitter есть только один emitterCell, мне не нужен emitterCell, а частицы, которые он уже создал.

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

1 ответ

Решение

К сожалению, частицы существуют только на оконном сервере, который является совершенно отдельным процессом от вашего приложения. (Это называется backboardd начиная с iOS 6.0.) Вы можете сделать это, приостановив свое приложение в отладчике во время работы эмиттера. Даже если ваше приложение остановлено, частицы продолжают появляться и перемещаться на симуляторе или устройстве. Таким образом, вы не сможете получить доступ к отдельным частицам.

Если ваша ячейка эмиттера velocityRange а также emissionRange оба равны нулю (что означает отсутствие случайности в векторе скорости ваших частиц), тогда вы сможете замедлить частицы, играя с xAcceleration, yAcceleration, а также zAcceleration свойства клетки. Тем не менее, частицы будут замедляться до остановки, а затем в обратном направлении. Если вы хотите, чтобы частицы исчезали после остановки, установите lifetime собственность соответственно.

Другие вопросы по тегам