game cocos2d, tekstur sistem ccparticle kacau

permainan saya menggunakan beberapa sistem partikel. setiap kali saya menggunakan sistem partikel pertama, misalnya bintang.plist, partikel berikutnya yang ditampilkan akan menggunakan tekstur bintang.plist. (jadi kalau partikel berikutnya hujan, maka akan menjadi hujan bintang :( Saya menggunakan [ARCH_OPTIMAL_PARTICLE_SYSTEM partikelDenganFile: @""], seperti:

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

dan sebelum menginisialisasi hujan, saya mendapat panggilan untuk memuat partikel terlebih dahulu hanya dengan menggunakan:

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

lalu kalau partikel selanjutnya yang saya mainkan adalah meteor.plist, tekstur yang digunakan masih tekstur rain.plist.

saya menggunakan cara yang sama untuk menampilkan meteor:

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

Saya sudah mencoba CCParticleQuad dan CCParticlePoint, di 3gs dan iPhone 4 dan simulator, tetapi masalahnya masih sama.


person OMGPOP    schedule 02.02.2012    source sumber
comment
Bagaimana Anda memberikan teksturnya? Apakah itu dikodekan dalam file .plist atau file terpisah? Saya pernah mengalami masalah serupa dengan tekstur yang tertanam di plist sebelumnya, itu sebabnya saya bertanya.   -  person bummzack    schedule 02.02.2012
comment
jadi Anda mengubah ke file terpisah dan berhasil?   -  person OMGPOP    schedule 02.02.2012


Jawaban (1)


Jika data tekstur tertanam dalam file .plist, cocos2d akan mengekstrak data tersebut dan menyimpannya sebagai tekstur secara internal. Tekstur disimpan dengan nama file tekstur sebagai kuncinya, jadi jika Anda mempunyai dua sistem partikel yang menggunakan nama file tekstur yang sama secara internal, maka tekstur yang dimuat pertama akan diterapkan untuk semua penggunaan berikutnya dari nama file tekstur yang sama!

Cara mudah untuk memeriksanya adalah dengan melihat file .plist Anda dan mencari kunci textureFileName. Kunci ini harus berbeda untuk setiap tekstur. Karena data gambar tertanam dalam file .plist Anda, Anda dapat mengubah nilai ini menjadi apa pun yang Anda inginkan.. misalnya. starparticle.png untuk bintang Anda, rainparticle.png untuk hujan, dll. Gunakan saja sesuatu yang unik untuk setiap tekstur unik.

Jika gagal, Anda masih dapat menerapkan tekstur secara manual, dengan memuatnya dari file seperti ini:

[rain setTexture: [[CCTextureCache sharedTextureCache] addImage:"particleTexture.png"]];
person bummzack    schedule 02.02.2012
comment
beberapa partikel saya menggunakan (null).tiff sebagai textureFileName. apa yang harus saya lakukan? - person OMGPOP; 02.02.2012
comment
@Let'sSpotIt cukup edit file dan berikan setiap tekstur nama file yang unik... seperti yang saya tulis di jawaban saya. Misalnya. rainparticle.png untuk sistem partikel hujan dan starparticle.png dalam sistem partikel bintang dll... - person bummzack; 02.02.2012
comment
saya tetap mengubahnya, dan berhasil. saya bertanya-tanya mengapa perancang partikel mengatur tekstur agar memiliki nama yang sama. - person OMGPOP; 02.02.2012