1

私のゲームはいくつかのパーティクルシステムを使用しています。最初のパーティクルシステム、たとえばstars.plistを使用するたびに、次に表示されるパーティクルはstars.plistのテクスチャを使用します。(したがって、次のパーティクルが雨の場合、星の雨になります:( [ARCH_OPTIMAL_PARTICLE_SYSTEMparticleWithFile:@ ""]を使用します。たとえば、次のようになります。

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

雨を初期化する前に、次のコマンドを使用してパーティクルをプリロードする必要があります。

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

次に再生するパーティクルがmeteor.plistの場合、使用されるテクスチャは引き続きrain.plistのテクスチャです。

私は流星を表示するために同じ方法を使用します:

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

3gsとiPhone4およびシミュレーターの両方でCCParticleQuadとCCParticlePointを試しましたが、それでも同じ問題が発生します。

4

1 に答える 1

3

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

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

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

[rain setTexture: [[CCTextureCache sharedTextureCache] addImage:"particleTexture.png"]];
于 2012-02-02T10:09:39.820 に答える