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
собственность соответственно.