2012-02-02 4 views
1

私のゲームはいくつかのパーティクルシステムを使用しています。私が最初のパーティクルシステムstars.plistを使用するたびに、表示される次のパーティクルはstars.plistのテクスチャを使用します。 (次粒子が雨であれば、その後、星の雨になりそう:( 私は[ARCH_OPTIMAL_PARTICLE_SYSTEM particleWithFile:「」@]を使用して、のような:cocos2dゲーム、cc粒子システムのテクスチャが乱れた

CCParticleSystem* rain = [ARCH_OPTIMAL_PARTICLE_SYSTEM particleWithFile:@"rain.plist"]; 
[self addChild:rain z:-1]; 

と雨を初期化する前に、私はプリロードへの呼び出しを持っています粒子は、単に使用して:

[ARCH_OPTIMAL_PARTICLE_SYSTEM particleWithFile:@"rain.plist"]; 

を、次に再生する私の次粒子が使用されるテクスチャはまだrain.plistの質感で、meteor.plistある場合

を私は流星を表示するのと同じ方法を使用します。

NSString* fn = [NSString stringWithFormat:@"meteor%i.plist", random]; 
    CCParticleSystem* meteor = [ARCH_OPTIMAL_PARTICLE_SYSTEM particleWithFile:fn]; 

私は3gsとiPhone 4とシミュレータの両方でCCParticleQuadとCCParticlePointを試しましたが、それでも同じ問題があります。

+0

あなたはテクスチャを提供するにはどうすればよいですか?それは '.plist'ファイルにエンコードされているのですか、それとも別のファイルですか?以前はplistに埋め込まれているテクスチャにも同様の問題がありました。それが私が求めている理由です。 – bummzack

+0

1つのplistファイルのみ。 – OMGPOP

+0

だから、あなたは分離されたファイルに変更し、それは働いたのですか? – OMGPOP

答えて

3

テクスチャデータが.plistファイル内に埋め込まれている場合、cocos2dはそのデータを抽出して内部的にテクスチャとして保存します。テクスチャはテクスチャファイル名をキーとして格納されているので、内部的に同じテクスチャファイル名を使用する2つのパーティクルシステムがある場合、同じテクスチャファイル名を使用する場合は、最初にのテクスチャが適用されます。

これを確認する簡単な方法は、.plistファイルを調べて、というキーを検索することです。このキーは、テクスチャごとに異なる必要があります。イメージデータは.plistファイルに埋め込まれているので、この値を必要なものに変更することができます。あなたの星のためのstarparticle.png、雨のためのrainparticle.pngなど。ユニークなテクスチャーごとにユニークなものを使用してください。

それが失敗した場合、あなたはまだこのようなファイルからそれをロードすることによって、手動でテクスチャを適用できます。

[rain setTexture: [[CCTextureCache sharedTextureCache] addImage:"particleTexture.png"]]; 
+1

私のパーティクルの一部は(null).tiffをtextureFileNameとして使用します。私は何をすべきか? – OMGPOP

+0

@ Let'sSpotItファイルを編集して、各テクスチャに固有のファイル名を付けます...私の答えに書いたとおりです。例えば。 rain粒子システムの場合は 'rainparticle.png'、星粒子システムの場合は' starparticle.png'などとなります。 – bummzack

+0

とにかく変更してしまいました。パーティクルデザイナーが同じ名前を持つようにテクスチャを設定した理由は不思議です。 – OMGPOP

関連する問題