1

Tiled ソフトウェアを使用して作成した 400x400 のタイル マップを読み込んでいます。1 つのタイルは 120 ピクセルで、合計 48000x48000 ピクセルです。

私はこのようにロードします

    regionMap->initWithTMXFile("background2.tmx");
    mapLayer->addChild(regionMap, 0, enTagTileMap);
    mapLayer->setAnchorPoint(CCPoint(0,1));

次に、このようにスクロールします。

    mapLayer->setPosition(position);

この位置まで垂直にスクロールすると、マップからタイルが取得されなくなり、黒いタイルのみが取得されます。

    x=0 , y=5483.748535

水平にスクロールすると、この位置に到達しても同じ問題は発生しません。

    x=-48000, y=400

よろしくお願いします。

4

1 に答える 1

1

cocos2d-x のタイルマップ レンダラーは、cocos2d-iphone のタイルマップ レンダラーを直接移植したものと考えるのが妥当だと思います。true の場合、表示できる頂点の最大数は 65,536 (16,384 タイル) という同じ制限があります (空のタイルはカウントされません)。

あなたのタイルマップは 400x400 = 160,000 個のタイルで、レイヤーが 1 つしかなく、「空の」タイル (空 == GID 値 0 のタイルの場所) がないと仮定します。これは、cocos2d がレンダリングする/レンダリングできるタイルの数の約 10 倍を意味します。

Cocos2d は最大 16,384 個のタイルをレンダリングしてから停止します。残りのタイルはレンダリングされないため、背景色 (デフォルト: 黒) が表示されます。

一般的ですが厄介な回避策は、マップを複数の TMX ファイルに分割し、それらをコードで整列させることです。

于 2013-12-15T12:56:08.057 に答える