TMXTileMapにおけるCCSpriteのzOrderに関する変更点

本日ようやく今作成しているアプリを「cocos2d1.x => coocs2d 2.0」にアップグレードできました。 その過程で色々変更しなくてはいけない点がありましたので、今回はTMXTileMap上でCCSpriteを使った時の透過処理についてを紹介します。

cocos2d ver1.xの場合

Tiledで作ったタイルマップを利用する際に、zOrderの調整で以下のコードを利用していました。 [c] -(void) draw { glEnable(GL_ALPHA_TEST); glAlphaFunc(GL_GREATER, 0.5f); [super draw]; glDisable(GL_ALPHA_TEST); }

[/c]

CCSpriteクラスを親にしたCCZSpriteクラスを作り上記のdrawだけを弄ってあげれば、ゲーム上でz値の調整がうまくできました。

cocos2d ver2.xの場合

ver1.xではOpenGL1.1を利用していたので、先ほど書いたコードが利用できたいのですが、 ver2になるとOpenGL2.0を利用するようになるので、使うことができません。

そこで別のコードを置き換えてあげれば利用できるようになるでしょう。 [c] -(void) draw { //この一行に置き換える [self setShaderProgram:[[CCShaderCache sharedShaderCache] programForKey:kCCShader_PositionTextureColorAlphaTest]]; //glEnable(GL_ALPHA_TEST); //glAlphaFunc(GL_GREATER, 0.5f); [super draw]; //glDisable(GL_ALPHA_TEST); }

[/c]

これで今までと同じように利用できるでしょう。

[参考サイトにしたサイト]

Cocos2d 2.0, iOS 6 & iPhone 5 Updates
[self setShaderProgram:[[CCShaderCache sharedShaderCache] programForKey:kCCShader_PositionTextureCo ...

さいごに

今回は私が1.xからバージョンアップをしようとしたのは、このTMXTileMapで作ったマップを行き来する時に、どうしてもメモリの消費が大きくなってしまうのを解消したかったからです。 しかし、今のところ以前と変わりない状況です。 もし、この問題の解決策を知っている方がいらっしゃいましたら是非教えて欲しいです。