updateWithDelta:
パーティクルを更新するために、ゲームループで何らかのメソッドを使用していると思います。特定の間隔の後にパーティクルを開始する場合は、独自のタイマーを作成します。
編集:以下のコメントに基づいて、私の方法はまだ良いですが、微調整が必要です. updateWithDelta:
パーティクル システムのメソッドで条件を削除するだけですそうすれば、3秒間は更新されますが、レンダリングされないため、説明したように見えます.
.h ファイル内:
BOOL particleShouldUpdate;
float particleTimer;
あなたのinit
方法では:
particleShouldRender = NO;
particleTimer = 3.0f;
あなたのupdateWithDelta:
方法では:
if(!particleShouldRender){
particleTimer -= delta;
if(particleTimer < 0){
particleShouldRender = YES;
}
}
// update your particle.
最後に、render メソッドで次のようにします。
if(particleShouldRender){
// render your particle.
}
この時点から、レンダリングを停止したい場合は、init
メソッドのように 2 つの変数をリセットするだけで、同じ効果が発生することに注意してください。
EDIT2:init
さらに明確にするために、粒子の方法を適応させるだけここでは 2 つの仮定を行いますが、ニーズに合わせてわずかに変更するだけで済みます。更新サイクルが毎秒 60 フレームで、パーティクルの最小寿命が 1.01 で、ゲームを開始する前に 3 秒間の更新が必要であるとします。次に、init
メソッドで次を試し
for(float delta = 0.0f; delta < 3.0f; delta += (1/60)){
[particle updateWithDelta:(float)(1/60)];
}
これにより、通常のようにパーティクルが更新されますが、各間隔でレンダリングされることはなく、他のものが更新される前に行われます。または、パーティクルを更新する際の速度が心配な場合は、次のことを試してください。
for(int i = 0; i < 3; i++){
[particle updateWithDelta:1];
[particle updateWithDelta:0.02];
}
これにより高速になりますが、パーティクル パラメータによってはいくつかの問題が発生する可能性があります。
EDIT3:これをさらに調べると、cocos2D では何らかの理由でこれを行うことができません。これと同様の質問をオンラインで見つけましたposVar
とspeed
を十分に大きくして、シーンに完全に移行したら、値を通常の値にリセットすることを提案しました。あなたはそれを試してみたいかもしれません!
それが役立つことを願っています!