質問

「タイル張りの」アプリケーションで作成されたTMXマップを広範囲に使用するトップダウンシューティングゲームを作成しています。 TMXマップには、床タイルの「バックグラウンド」レイヤーがあり、キャラクター(ccsprites)の下に表示されます。

TMXファイルに「Foreground」と呼ばれる別のレイヤーがあり、「私のccsprites」の上に表示されたいと思います。

これを行うには、CCNodeクラスのVertexzプロパティを使用してみました。

CCTMXLayer *backgroundLayer = ...
CCSprite *spriteNode = ...
CCTMXLayer *foregroundLayer = ...

[backgroundLayer setVertexZ:1];
[spriteNode setVertexZ:2];
[foregroundLayer setVertexZ:3];

...しかし、それはvertexzが実際にノードを変えることがわかります ビジュアル OpenGLビュー内の外観。それは効果的にccnodeを大きく見せます、または ユーザーに近い Vertexz値が高い場合。私はそれを望んでいません - 私が望むのは、レイヤー間に視覚的な違いがなく、不可能に薄いケーキ効果の一種のレイヤーです。

だから、私はこのようなノードのZorderプロパティを変更してみようと思った:

[[backgroundLayer parent] reOrderChild:backgroundLayer z:1];
[[spriteNode parent] reOrderChild:backgroundLayer z:2];
[[foregroundLayer parent] reOrderChild:backgroundLayer z:3];

しかし、私のスプライトノードはccceneの直接の子供であるため、私はここでやっていることに根本的な問題があることに気付きましたが、背景と前景のノードはどちらも私のcctmxtiledmapの子供です。 自体 ccceneの子です。

だから私は基本的に、マップの2層の間にccspriteを滑らせようとしています。 ccscene's 視点は、実際には同じレイヤーの2つの部分にすぎません。

フォアグラウンド層を保持するためだけにCCTMXTILEDMAPの追加インスタンスを作成できるようですが、それも過剰に思えるようです。私のもう1つの考えは、同じ目的を果たすためにccspritesを作成することでしたが、より良い方法がなければならないようです。

役に立ちましたか?

解決

はい、私は非常に軽くタイル張りを使用しましたが、TMXTILEDMAPにオブジェクトレイヤーを追加するオプションがあると信じています(TILED->レイヤー - >オブジェクトレイヤーを追加...)、ビルドにインポートするとリンクできます作成した対応するオブジェクトレイヤーを備えたccsprite。 Cocos2Dフォーラムにあなたの質問を投稿します。なぜなら、それがより経験豊富で装備が整っているため、これに例を挙げて答えることができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top