1

サブビュー内の UIView に CAEmitter を正常に追加しましたが、そのレイヤーから放出されたパーティクルはそのビューの外まで伸びています。cookiecutter のコードとパラメーターについては、以下のコードを参照してください。私の質問は、生成されたパーティクルが親ビューから出ないようにするにはどうすればよいですか?

特定のフレームでサブビューを初期化し、境界のサイズを変更しようとしました。どちらの場合も、放出されたパーティクルは境界の内側から始まりますが、ビュー フレームの外側を飛び、境界がないように見えます。ライフタイムを制限するか、画面の端に到達するまで、それらは消えません。エミッターがビュー外のオブジェクトと相互作用するのを防ぐ方法はありますか?

    CAEmitterLayer *emitterLayer = (CAEmitterLayer*)self.layer;

emitterLayer.name = @"emitterLayer";
emitterLayer.emitterPosition = CGPointMake(self.frame.size.width/2, 0);
emitterLayer.emitterZPosition = 0;

emitterLayer.emitterSize = CGSizeMake(1.00, 1.00);
emitterLayer.emitterDepth = 0.00;

emitterLayer.emitterShape = kCAEmitterLayerCuboid;

emitterLayer.renderMode = kCAEmitterLayerAdditive;

emitterLayer.seed = 3534563912;

// Create the emitter Cell
CAEmitterCell *emitterCell = [CAEmitterCell emitterCell];

emitterCell.name = @"StatSap";
emitterCell.enabled = YES;

emitterCell.contents = (id)[[UIImage imageNamed:@"mysprite.png"] CGImage];
emitterCell.contentsRect = CGRectMake(0.00, 0.00, 1.00, 1.00);

emitterCell.magnificationFilter = kCAFilterTrilinear;
emitterCell.minificationFilter = kCAFilterLinear;
emitterCell.minificationFilterBias = 0.00;

emitterCell.scale = 1.00;
emitterCell.scaleRange = 0.00;
emitterCell.scaleSpeed = -0.24;

emitterCell.color = [[UIColor colorWithRed:1.00 green:0.28 blue:0.26 alpha:1.00] CGColor];
emitterCell.redRange = 1.00;
emitterCell.greenRange = 0.34;
emitterCell.blueRange = 0.31;
emitterCell.alphaRange = 0.46;

emitterCell.redSpeed = 2.03;
emitterCell.greenSpeed = 0.00;
emitterCell.blueSpeed = 0.00;
emitterCell.alphaSpeed = 0.00;

emitterCell.lifetime = 2.65;
emitterCell.lifetimeRange = 1.02;
emitterCell.birthRate = 267;
emitterCell.velocity = 155.32;
emitterCell.velocityRange = 25.00;
emitterCell.xAcceleration = 0.00;
emitterCell.yAcceleration = 911.00;
emitterCell.zAcceleration = 0.00;

// these values are in radians, in the UI they are in degrees
emitterCell.spin = -0.175;
emitterCell.spinRange = 12.566;
emitterCell.emissionLatitude = 0.000;
emitterCell.emissionLongitude = 0.000;
emitterCell.emissionRange = 6.283;

emitterLayer.emitterCells = @[emitterCell];
4

1 に答える 1