1

私は飛び込み、cocos2dを学ぼうとしています。現在、ボタンを押してタイルセットを交換しようとしています。

例: プレイヤーが芝生の上に立っているときにボタンを押すと、タイルセットが雪のテクスチャに変わります。

tiled を使用してマップを作成しましたが、タイルを表示するために tiled が使用しているイメージ シートを切り替えるだけでよいと考えていました。

画像シートはまったく同じサイズで、画像の位置もまったく同じです。

どなたかアドバイスやご意見がありましたら、よろしくお願いいたします。:)

4

1 に答える 1

2

タイルセットを使用する CCTMXLayer クラスは CCSpriteBatchNode を継承しています。新しいタイルセットのテクスチャを含む setTexture: メッセージを CCTMXLayer に送信してみてください。

ただし、コードをざっと読むだけで、これが問題になる領域があります。たとえば、テクスチャを設定しても、現在バッチ ノードの子ノードであるタイルのテクスチャは変更されません。つまり、バッチ ノードとは異なるテクスチャを使用するため、レンダリングに失敗したり、クラッシュしたりします。すべてのスプライトのテクスチャを同時に更新することは可能かもしれませんが、バッチ ノードまたはスプライトのテクスチャが変更された場合、バッチ ノードのテクスチャとは異なり、エラーが発生するため、これは機能しないと思います。

考えられる方法の 1 つは、CCTMXLayer 全体を削除して新しいものに置き換えることです。ただし、CCTMXLayer は内部でのみ使用される構造で初期化されており、少なくとも一部は読み込み時にしか使用できない場合があります。したがって、単純な cocos2d でタイルセットを置き換える唯一の方法は、おそらく CCTMXTiledMap ノード全体を置き換えることです。

もちろん、草と雪の両方のタイルを同じタイルセットに追加して、タイルの GID を変更することもできます。

前述したように、KoboldTouch では実行時にタイルセットを変更できます。KoboldTouch 自体はレンダラーとして cocos2d-iphone を使用しています。

于 2013-05-13T20:44:31.850 に答える