0

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;

助けてくれてありがとう!

4

1 に答える 1

0

率直に言って、あなたが望む粒子システムの 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;
    .
    .
于 2012-10-19T12:36:51.713 に答える