FC2ブログ

Entries

cocos2d パーティクル

iPhone 2D ゲーム用ライブラリ cocos2d のプログラミングガイドを日本語訳しながら読んでいます。

今回は、パーティクル。日本語では「粒子」とかそういった意味です。

cocos2d のデモを見ましたが、これすごいですね。

すごい効果をゲームにつくり込むことができます。

これを駆使すれば、スマートでクールなゲームがじゃんじゃん作成できると思います。

ここで実際にパーティクルデザイナを使用してみています。イメージがわきにくい方は是非最初にみてみてください。

では読んでいきましょう!

--------------------------------
cocos2dプログラミングガイド
パーティクル(Particles)

<目次
パーティクル(Particles)の使い方

パーティクル(Particles)
パーティクルシステムとは?
Wikipedia: パーティクルシステム

cocos2d でのパーティクルシステム

ポイント(Point) 対 クワッド(Quad)
cocos2d には、2種類のパーティクルシステムがあります:クワッド(Quad)とポイント(Point)パーティクルシステムです。
・CCParticleSystemQuad
・CCParticleSystemPoint

CCParticleSystemQuad は CCParticleSystemPoint ではサポートされていない以下の追加機能があります。
・回転(spinning)パーティクル:パーティクルは軸の周りを回転することができます。CCParticleSystemPoint ではこのプロパティは無視されます。
・パーティクルはいかなるサイズも指定可能です。CCParticleSystemPoint では、サイズが 64 より大きい場合は、64 として扱われます。
・全システムで scale プロパティを使用して測定されます。

パフォーマンスの比較
API docs より
・初代、第二世代iPhoneでは:CCParticleSystemQuad はほんのちょころびっとだけ CCParticleSystemPoint より遅い
・第三世代iPhoneとiPadでは:CCParticleSystemQuad は CCParticleSystemPoint よりとても速い
・CCParticleSystemQuad は CCParticleSystemPoint よりも RAM と GPU メモリを消費する

ポイントパーティクルシステムの構築
ポイントパーティクルシステム(Point Particle System)を構築するためには:

クアッドパーティクルシステム(Quad Particle System)の構築
クアッドパーティクルシステムを構築するためには:


重力(Gravity) 対 半径(Radius)モード
v0.99.3 から、半径(Radius)モードが新規に追加されました。それ以前では重力(Gravity)モードが呼ばれます。

重力(Gravity)モード
以下のプロパティは重力(Gravity)モードでのみ有効です。
・gravity (CGPointで指定)。パーティクルシステムの重力を指定。
・speed(floatで指定)。パーティクルが放出される際のスピード
・speedVar(floatで指定)。速さの自由度(variance)。
・tangencialAccel(floatで指定)。パーティクルの接線方向の加速度(tangential acceleration)
・radialAccel(floatで指定)。パーティクルの放射加速度(radial acceleration)
・radialAccelVar(floatで指定)。放射加速度の自由度(variance)

重力(Gravity)モード(デフォルト)でパーティクルを設定するには、以下のようにしてください:

半径(Radius)モード
※v0.99.3 以降で有効

以下のプロパティは半径(Radius)モードでのみ有効です。
・startRadius(floatで指定)。パーティクルの開始半径。
・startRadiusVar(floatで指定)。開始半径の自由度。
・endRadius(floatで指定)。パーティクルの終了半径。開始半径 == 終了半径 としたい場合は、kCCParticleStartRadiusEqualToEndRadius を使用する。
・endRadiusVar(floatで指定)。終了半径の自由度 。
・rotatePerSecond(floatで指定)。最初の位置の回りを一秒間に回転する角度
・rotatePerSecondVar(floatで指定)。角度の自由度。

半径(Radius)モードでパーティクルを設定するには、以下のようにしてください:

すべてのモードで共通のプロパティ
パーティクルの共通プロパティ:
・startSize:パーティクルの開始ピクセルサイズ。
・startSizeVar
・endSize: 開始サイズ == 終了サイズとしたい場合は、kCCParticleStartSizeEqualToEndSize を使用。
・endSizeVar
・startColor (cColor4Fで指定)
・startColorVar (ccColor4Fで指定)
・endColor (ccColor4Fで指定)
・endColorVar (ccColor4Fで指定)
・startSpin。CCParticleSystemQuadでのみ使用される。
・startSpinVar。CCParticleSystemQuad でのみ使用される。
・endSpin。CCParticleSystemQuad でのみ使用される。
・endSpinVar。CCParticleSystemQuad でのみ使用される。
・life: パーティクルの生存時間(秒)。
・lifeVar:
・angle: (floatで指定). パーティクルの開始角度。
・angleVar
・positon: (CGPointで指定)
・posVar
・centerOfGravity (CGPointで指定)

システムでの共通プロパティ:
・emissionRate (floatで指定).。一秒間に放出されるパーティクル数。
・duration (floatで指定).。パーティクルシステムの生存期間(life プロパティとは異なる)。無期限の場合は kCCParticleDurationInfinity。
・blendFunc (ccBlendFuncで指定). システムで使用するための OpenGL のブレンディング関数 (blending function)。
・positionType (tCCPositionTypeで指定). パーティクルを自由動作させるには、kCCPositionTypeFree(デフォルト値)を指定。グループで移動させるには kCCPositionTypeGrouped を指定。
・texture (CCTexture2Dで指定). パーティクルで使用されるテクスチャ。



cocos2d では実行時にカスタマイズ可能な定義済みのパーティクルが同封されています。定義済みパーティクルの一覧:
・CCParticleFire: ポイントパーティクルシステム。重力モード使用。
・CCParticleFireworks: ポイントパーティクルシステム。重力モード使用。
・CCParticleSun:ポイントパーティクルシステム。重力モード使用。
・CCParticleGalaxy:ポイントパーティクルシステム。重力モード使用。
・CCParticleFlower:ポイントパーティクルシステム。重力モード使用。
・CCParticleMeteor:ポイントパーティクルシステム。重力モード使用。
・CCParticleSpiral: ポイントパーティクルシステム。重力モード使用。
・CCParticleExplosion:ポイントパーティクルシステム。重力モード使用。
・CCParticleSmoke:ポイントパーティクルシステム。重力モード使用。
・CCParticleSnow:ポイントパーティクルシステム。重力モード使用。
・CCParticleRain:ポイントパーティクルシステム。重力モード使用。


パーティクルデザイナ

パーティクルデザイナ(Particle Designer)の使用

パーティクルデザイナはビジュアルにパーティクルを作成できるツールです


パーティクルデザイナを使用するためには:
1.パーティクルデザイナをダウンロードして、ユーザ登録してください。(ユーザ登録しない場合は、パーティクルの保存ができません。)
2.テクスチャの保存の際は「cocos2d (plist)」フォーマットを使用してください。(テクスチャは埋め込んでも埋めこまなくても良い。cocos2d は両方共サポートしています。)



パーティクルデザイナで作成したパーティクルを読み込むためには:


cocos2d と パーティクルデザイナ 間での相違

cocos2d はパーティクルデザイナのすべての機能をサポートしていますが、パーティクルデザイナは cocos2d の機能のすべてをサポートしていません。

cocos2d のみでサポートされている:共通
・startSpin / startSpinVar :クワッド使用時のみ
・endSpin / endSpinVar :クワッド使用時のみ

cocos2d のみでサポートされている:重力(Gravity)モード
・tangentiallAccel / tangentialAccelVar: cocos2d でのみサポート
・radialAccel / radialAccelVar: cocos2d でのみサポート

cocos2d のみでサポートされている:半径(Radius)モード
cocos2d はパーティクルデザイナから半径モードをコピーし、そして少しだけ拡張しました。

パーティクルデザイナは以下の3つのプロパティを使用します。
・maxRadius
・maxRadiusVariance
・minRaidus

そして、cocos2d はこれらほかの値を使用します。
・startRadius
・startRadiusVar
・endRadius
・endRadiusVar

cocos2d はパーティクルデザイナの振る舞いをエミュレートし、そして少しだけ実現性のある以下のようなことを提供します:
・半径(Radius)の変化(variance)を 0 または負(内側から外側へ増える)に設定可能。


Particle Mint

Particle Mint の使用

Particle Mint はiPhone や iPad 上で動作するビジュアルにパーティクルを作成可能なもうひとつのツールです。App Storeからダウンロード可能です。



Patricle Mint で作成したパーティクルを使用するためには:
1.パーティクルシステムを保存して送信するためにアプリを購入してください。
2.作成したパーティクルシステムを自分自身にメールし、そしてメール内の説明のとおりにします。実際には、Xcodeプロジェクトに Particle Factory クラスを追加し、パーティクルシステムを構築する static メソッドを挿入します。

Particle Mint で作成したパーティクルを読み込むには:
・Particle Factory クラスとテクスチャをプロジェクトにインポートします。
・以下のコードを使用します:

サポートされている機能

Particle Mint は、cocos2d-1.0-rc3 をベースとしています。ですので、すべてのパーティクルシステムの機能をサポートしており、デバイス上で真のパフォーマンスが得られます。

-----------------------------------
この、パーティクルってすごいですね。

いろんな効果にどんどん使っていきたいと思います。

パーティクルデザイナを実際にいじってみています。是非こちらも参照ください。
スポンサード リンク

コメント

コメントの投稿

コメントの投稿

管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://miyachikantaro.blog.fc2.com/tb.php/25-c8b5bc47
この記事にトラックバックする(FC2ブログユーザー)

Appendix

出演ゲーム

みやちかんたろうの大冒険

↑インストールはこちらから
予告編

21面デモ

ステージ作成

検索フォーム

訪問者

Apple製品紹介

Apple MacBook Air 1.6GHz 13.3インチ MB003J/A

中古価格
¥59,800から
(2013/1/24 06:45時点)

QRコード

QR

メールフォーム

名前:
メール:
件名:
本文:

Extra

プロフィール

みやちかんたろう

Author:みやちかんたろう
種別:きいろいねこ
年齢:10歳
性別:オス
趣味:昆虫採集
twitter:@gatsupport

※このサイトはリンクフリーです。ご自由にリンクしてください。相互リンクもじゃんじゃん募集中です!!

最新記事

最新コメント

最新トラックバック

月別アーカイブ