パーティクルの設定をプログラムで動的に変える

※こちらは、細かい使用方法の調査は同僚に行っていただきました。ありがとうございます!

パーティクルの色や放出量や半径といったプロパティをCCAction系の使用感覚で変えたいことがあると思います。

実は、任意のプロパティの値をTween的に変更する方法が用意されています。
CCActionTweenとCCActionTweenDelegateです。

CCActionTweenの使い方は他のCCAction系のクラスとほぼ同じで、違うのが、以下の2点です。
・プロパティ名を引数に与える
・アニメーションさせたいクラスにCCActionDelegateを継承させ、updateメソッドを定義して、その中でプロパティの変更の計算を実装する必要がある。

勝手に、プロパティの値を均一に補完してくれる訳ではないんですよね。
これだと、自分でscheduleUpdate()とかで1フレームごとのプロパティ値設定を実装するのと大して変わらないと思われるかもしれません。

ただ、CCActionIntervalの派生クラスなので、他の派生クラスとのCCSequenceやCCSpawnによる組み合わせが期待できるのが大きいです。
やはり生にupdateメソッドを書くより扱いやすく読みやすいコードになります。

具体的にパーティクルに対して適用するときは、CCPartilceSystemQuadとCCActionTweenDelegateを多重継承したクラスを作って、それをCCPartilceSystemQuadの代わりに使うのが楽でしょう。

プログラムから好きなように動的に設定値を変えられると、パーティクルの表現の幅が広がります。
パフォーマンスにはご注意を。