プログラミングの魔物

エラー、バグ、仕様変更と戦うブログ

cocos2d パーティクル効果

cocos2dで作るiPhone&iPadゲームプログラミング9章

パーティクルとは粒子のことで、それを大量に放出することで炎とか爆発とかのエフェクトが作れる。
とりあえずParticleDesignerはいいらしい。

パーティクルはCCNode派生なので便利に使えるらしい。
組み込みのパーティクルをちゃんと表示するにはfire.pngが必要。

パーティクル効果の作成

CCParticleSystemのサブクラスを作成し、たくさんのプロパティを調節する。
アーキテクチャによって2種類のクラスがある。迷ってるならCCParticleSystemQuad
アーキテクチャごとに使い分けたければ、ARCH_OPTIMAL_PARTICLE_SYSTEMというプリプロセッサ定義もあるが、v2では使えなさそう。

許容誤差プロパティ

Varというサフィックスが付いたプロパティは誤差を表す。誤差の分ランダムになる。

パーティクルの数

initで

return [self initWithTotalParticles:250];

後から変更もできる。多すぎるとフレームレートダウン

放出時間

self.duration = 2.0f;

2秒間放出して停止。
最後のパーティクルが消えたらノードから自動で削除するには

autoRemoveOnFinish = YES;

パーティクルを無限に実行するには

self.duration = kCCParticleDurationInfinity;//kCCParticleDurationInfinity=-1

放出モード

emitterModeにGravityとRadiusの2種類がある。モードによって設定してはいけないプロパティもある。

Gravity
self.emitterMode = kCCParticleModeGravity;

パーティクルが中心点に向かう、または中心点から放出。
専用プロパティはP232

Radius
self.emitterMode = kCCParticleModeRadius;

パーティクルを回転。または外に向かって回転するパーティクルでらせん。
専用プロパティはP233

パーティクルの位置

self.position = CGPointZero;
self.posVar = CGPointZero;

ややこしいので引用ペタリ
CCParticleSystem の設定(v2.0)

プロパティ名 説明
emitterMode 放出モード
Gravity:パーティクルを中心に向かって or 中心から放出
Radius:パーティクルを円形に回転
radialAccel
※Gravityモード用
パーティクルの加速度(マイナス値だと減速する)
tangentialAccel
※Gravityモード用
パーティクルの回転加速度(正:反時計回り、負:時計回り)
speed
※Gravityモード用
パーティクルの速度
startRadius
Radiusモード用
ノードの位置からパーティクルを放出する距離
endRadius
Radiusモード用
パーティクルが回転しながら向かっていく距離kCCParticleStartRadiusEqualToEndRadius を設定すると、円になる。
rotatePerSecond
Radiusモード用
パーティクルが移動する方向と速さ
totalParticles パーティクルの数
duration 放出期間(秒数)
kCCParticleDurationInfinity:無限に放出
全てのパーティクルを放出&消滅したら、パーティクルノードを自動的に削除する場合は、autoRemoveOnFinishをYESに設定する(放出期間が有限の場合)
positionType 位置の種類
kCCPositionTypeGrouped:親ノードの動きに応じて移動
kCCPositionTypeFree:親ノードの動きで位置は変わらない。形状は影響を受ける
kCCPositionTypeRelative:親ノードの動きで位置は変わらない。形状も影響を受けない
position 位置
startSize 放出される時のサイズ
endSize 消える時のサイズ
angle Gravityモードの場合:パーティクルが最初に放出される方向
0は上。
Radiusモードの場合:startRadiusのどこで放出されるか
life 存続期間(秒数)
emissionRate 1秒間に放出されるパーティクルの数
startColor 放出直後の色
endColor 消える時の色
blendFunc ブレンドモード奥が深いので、ググることを奨励
texture テクスチャこんな感じで設定する。
emitter_.texture = [[CCTextureCache sharedTextureCache] addImage: @”stars-grayscale.png”];

http://nomadarian.com/archives/date/2012/09

ParticleDesignerの概要

P239。使うときにでも参照。

今回は少し飛ばした。おそらく使うことになるのでその時にもう一度読む。

参考:

cocos2dで作る iPhone&iPadゲームプログラミング

cocos2dで作る iPhone&iPadゲームプログラミング