2011-06-29 10 views
2

私はCCParticleSystemQuadを使用してパーティクルエフェクトを作成しています。今度は私のCocos2dシーンからCGRectとの衝突をテストしたいと思います。私はこれに似た別の主題を列挙して少し近づいたが、私はまだ完全な解決策を持っていないので、わずかに異なる主題を付け加えた。Cocos2dでの粒子による衝突検出

私は解決策の半分を持っています。私は各粒子の位置を知ることができ、衝突をテストできるようになりました。衝突するとそれぞれの位置を設定したいと思います。私は現在、CCParticleSystemQuadをサブクラス化して、そのように私自身のゲッターを追加してい :

-(tCCParticle*)getQuadParticle:(int)quadIndex 
{ 
    return &particles[quadIndex]; 
} 

その後、私のCocos2dシーンで、私は、粒子と位置を取得することができます:

tCCParticle *particle = [emitter getQuadParticle:i]; 
CGPoint pos = particle->pos; 

これは動作しますが、CCParticleSystemQuadことを警告しますgetQuadParticleに応答しない可能性があります。これは心配ですが、私が今やりたいことなど、同様の方法でシーンから位置を設定されている:私はから働くこれを行いセッターを作成する方法がわからないのですが

[emitter setParticlePos:i newPosition:newPos]; 

私のシーン。可能であれば、パーティクルのサブクラス内で衝突デートをしたくありません。

「Cocos2d(iphone)でパーティクルポジションを取得する方法」という同じトピックのトピックを開始し、「更新」メソッドまたは「updateQuadWithParticle」メソッドをオーバーライドするように指示されましたが、正確に。

誰かが私にこれを行う方法の例を示すことができたら、私は最も感謝しています。

+0

パーティクルごとに衝突検出が必要ですか?私はエミッタの衝突を検出する方法を教えてもいいが、それはあなたが望むものだとは思わない。 –

+0

はい、個々のパーティクルを個別に管理する必要があります。何か案は? – Kangoo

+0

実際にはありません。ちょっと推測すると、私はまだ粒子システムを調べていませんが、組み込みの粒子システムを使用する必要はありません(または、それらをオーバーライドすることもできます)。各パーティクルは、異なる色合いと不透明度で表示されたスプライトです(私は推測しています)。おそらく、おそらくCocos2dコードを掘り下げて、各スプライト/パーティクルが独自のボディを持っているようにするためのいくつかのメソッドをオーバーライドするのが最善の策です。 –

答えて

0

これは動作しますが、CCParticleSystemQuadが getQuadParticleに応答しない可能性があることを警告します。警告のために

、あなたのエミッタは、サブクラス(とではない通常のCCParticleSystemQuad)から作られていることを確認して、あなたのgetterメソッドがインターフェイス(.hファイル)で宣言され、実装で定義されている(.Mファイル)。

APIを見て、私はsetParticlePos:newPosition:するための方法が表示されませんが、似たものがある:-(void) updateQuadWithParticle:(tCCParticle*)particle newPosition:(CGPoint)pos;

私はそれを使用していないが、ソースを一瞥が、それは何が必要ありません示唆しているが。

そのため、おそらく便利だ [emitter updateQuadWithParticle:particle newPosition:newPos];

希望をしてみてください。