のドキュメントにSKEmitterNode
は、particleLifetime
プロパティは次のように記載されています。
パーティクルの平均寿命 (秒単位)。
ただし、xcode 7.2.1 で怪しいものを見ています。爆発エミッターを変更しようとしていたとき、エディターでパーティクルのライフタイム値を大きくすると、爆発の合計サイズが大きくなると予想していました...パーティクルはより長く存続し、より遠くまで移動します。彼らが展開する速度を上げたくない、私は現在の速度が好きです. もっと遠くまで飛ばして、もっと大きな「爆発」を起こしてほしいだけです。
しかし、実際に xcode で見たのは、爆発はまったく同じサイズのままですが、描画の間隔が長くなったということです。パーティクルのライフタイムをたとえば 0.5 に調整すると、xcode が爆発を繰り返し描画することがわかります。間隔をたとえば 20 まで調整すると、xcode はまったく同じサイズの爆発を 20 秒ごとに 1 回描画します。それは私が期待していたものではありませんでした。
以下を使用して、xcode 経由でエミッターを作成しました。
- テクスチャ: spark.png
- 粒子発生率:5500
- 最大パーティクル: 2266
- 角度開始: 0
- 角度範囲: 360
- 速度: 70
- 加速: 0
- 白から黄色へのカラー ランプ
そして、次の実験を試みました。
-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
SKEmitterNode *node = [SKEmitterNode nodeWithFileNamed:@"ExplosionNuke"];
SKEmitterNode *node2 = [SKEmitterNode nodeWithFileNamed:@"ExplosionNuke"];
SKEmitterNode *node3 = [SKEmitterNode nodeWithFileNamed:@"ExplosionNuke"];
SKEmitterNode *node4 = [SKEmitterNode nodeWithFileNamed:@"ExplosionNuke"];
for (UITouch *touch in touches)
{
CGPoint touchPoint = [touch locationInNode:layerWorld];
CGPoint left = CGPointMake(touchPoint.x - 100, touchPoint.y);
CGPoint right = CGPointMake(touchPoint.x + 100, touchPoint.y);
CGPoint top = CGPointMake(touchPoint.x, touchPoint.y + 100);
CGPoint bottom = CGPointMake(touchPoint.x, touchPoint.y - 100);
node.particleLifetime = .10;
node2.particleLifetime = .99;
node3.particleLifetime = 1.5;
node4.particleLifetime = 300;
node.position = left;
node2.position = right;
node3.position = top;
node4.position = bottom;
[layerWorld addChild:node4];
[layerWorld addChild:node3];
[layerWorld addChild:node2];
[layerWorld addChild:node];
}
画面上で 4 つのノードが同時にバーストすると、結果は次のようになります。
ライフタイム <= 0.99 の場合:爆発全体の形状が実際に変化します。値が小さいほど移動距離が短くなり、爆発が小さくなり、ビューからすばやく消えます。
for life >= 1.0:爆発のサイズは制限されます。1 ~ 2,250 の任意の値を指定すると、まったく同じサイズの爆発が作成され、まったく同じ時間だけ表示されます。ライフタイムが 2,000 のパーティクルは、ライフタイムが 1.0 のパーティクルより長くは見えません。また、ライフタイムが 1.00 を超える場合、パーティクルはカラー ランプを完全には完了しません。このエミッターは白から黄色に変化します。すべての期間が 1.0 未満の場合、ランプは完全に黄色になります。すべての値 > 1.0 は、著しく「白く」なります (画面から同時に消えますが)。
私は今、何をすべきかについて完全に混乱してparticleLifetime
います。0.0 から 1.0 までの値のみが目に見える変化を起こしています。カラー ランプが持続時間 > 1.0 で完了していないという事実は、パーティクルがより長く持続し、色を変更するためのより多くの時間を必要としていることを認識していると思います。ただし、それが完了する前にビューから消えます。
ここで何が間違っていますか?node4 のパーティクルは、5 分間にわたって画面を横切り、最終的には画面外に移動し続けないのはなぜですか? ノード 3 とまったく同時にそれらがビューからフェードアウトするのはなぜですか?