Анимация уже испущенных объектов CAEmitterCell

У меня есть CAEmitterCell, который я использую для создания непрерывного фона для моей игры. Когда игрок "умирает", я хочу, чтобы фон замедлялся до остановки, поэтому я сделал это:

- (void)stopAllEmitters:(NSTimeInterval)duration
{
    for(CAEmitterLayer* layer in self.emitters)
    {
        CAEmitterCell* e = layer.emitterCells[0];

        CABasicAnimation* anim = [CABasicAnimation animationWithKeyPath:@"emitterCells.emitter.velocity"];
        anim.fromValue = @(e.velocity);
        anim.toValue = @(0.0);
        anim.duration = duration;
        anim.fillMode = kCAFillModeForwards;
        anim.removedOnCompletion = NO;
        [layer addAnimation:anim forKey:@"emitterAnim"];
    }
}

Обратите внимание, что все emitterCells названы @"emitter" и каждый слой имеет только один emitterCell.

Это работает для всех будущих объектов - эмиттеров, но не для тех, которые уже были созданы, когда я это вызывал.

Есть ли способ применить анимацию скорости к объектам-эмиттерам, которые уже находятся на экране?

0 ответов

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