1

私は、標準の kobold2d タイルマップ ゲームを実行しています。これは、タイル マップ エディター (.tmx ファイル) からタイル マップをロードすることから始めようとしています。

標準コードは非常に単純です。

-(id) init
    {
        self = [super init];
        if (self)
        {
            // add init code here (note: self.parent is still nil here!)
            CCTMXTiledMap *tiledMap = [CCTMXTiledMap   tiledMapWithTMXFile:@"background.tmx"];
            [self addChild:tiledMap z:-1];
            tiledMap.position = CGPointMake(-500, -300);

            for( CCTMXLayer* child in [tiledMap children] ) {
                [[child texture] setAntiAliasTexParameters];
            }


            // uncomment if you want the update method to be executed every frame
            //[self scheduleUpdate];
        }
        return self;
    }

私のタイルマップは40x35タイルで、各タイルは64x64ピクセルです。

ただし、レイヤーの各行の間に黒い線があるように見える次の結果が得られました。

行間の黒い破線

私のタイルマップは次のようになります:

ここに画像の説明を入力

4

1 に答える 1

1

cocos2d の非常に標準的なタイルマップの問題です。

クイック フィックスは、ccConfig.h で「テクセルをストレッチしてアーティファクトを修正する」と呼ばれていますが、エイリアシングの副作用を伴うハック的な回避策であり、特にゆっくりとスクロールしたりズームしたりするときに顕著です。

実際の修正では、tmx ノード、その親、およびすべての祖父母のすべての位置を正確なピクセル位置に設定する必要があります。非 Retina デバイスでは、これは x/y 座標を int にキャストすることを意味し、Retina デバイスでは次に近い 0.5 座標に丸めることを意味します (つまり、10.3 は 10.5 になり、10.8 は 11.0 になります)。

PS: KoboldTouch および Kobold Kit (Sprite Kit) タイルマップ レンダラーには、この黒い線のアーティファクトの問題はありません。

于 2013-09-21T19:30:32.380 に答える