× [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。 |
cocos2d-xには、グローバルZ値を設定できる。
これによって、親子関係に依らず表示順序を設定できる。 グローバルZは、設定したそのノードだけに効く。 例えばノードAの子ノードBにグローバルZを設定し、一番手前に表示したとする。 ノードBの子ノードCがあったとき、ノードCは、ノードBより手前には表示されない。 ノードAの子として通常のローカルZによって描画順序が決定される。 ノードCをノードBより手前に表示したいときは、ノードCにもグローバルZを指定する必要がある。 なお、グローバルZは、値が小さい方が手前に表示される。 この点、ローカルZと逆になっている。 なぜこんなことになっているのか…。 ちなみにdouble型。 さて、グローバルZが子ノードに伝播しないと、 Labelが困ったことになる。 Labelは内部的にSpriteを子ノードに持っているため、 label->setGlobalZ() を設定しても、実際の文字にはグローバルZの値が効かないのだ! 参考 大変困る話だ。 表示文字列が決まっているなら、文字全体を一枚のテクスチャで作ってしまっておけばSpriteで表示するといった手で逃げられるが。 PR |
|