现在的位置: 首页 > 综合 > 正文

Tile Maps 的黑线,锯齿问题。

2017年10月31日 ⁄ 综合 ⁄ 共 1961字 ⁄ 字号 评论关闭

Tile Maps

TileMapAtlas gaps between tiles

When using TileMapAtlas the tiles will always have Anti-Aliasing active,
so if you don't remove the AA before using the Atlas you'll see lines
between each tile. In order to avoid this you have to remove the
Anti-Aliasing from that texture.

Code for cocos2d < 0.8.0

// Aliased images

[ Texture2D saveTexParameters] ;
[ Texture2D setAliasTexParameters] ;
TileMapAtlas * tilemap = [ TileMapAtlas tileMapAtlasWithTileFile: @ "tiles.png" mapFile: @ "levelmap.tga" tileWidth: 16 tileHeight: 16 ] ;
[ Texture2D restoreTexParameters] ;

Code for 0.8.0 ⇐ cocos2d < 0.99

        TileMapAtlas *
tilemap =
 [
TileMapAtlas tileMapAtlasWithTileFile:
@
"tiles.png"
 mapFile:
@
"levelmap.tga"
 tileWidth:
16
 tileHeight:
16
]
;
// Aliased images
[ tilemap.textureAtlas.texture setAliasTexParameters] ;

Code for cocos2d >= v0.99

        CCTileMapAtlas *
tilemap =
 [
CCTileMapAtlas tileMapAtlasWithTileFile:
@
"tiles.png"
 mapFile:
@
"levelmap.tga"
 tileWidth:
16
 tileHeight:
16
]
;
// Aliased images
[ tilemap.textureAtlas.texture setAliasTexParameters] ;
TMX Tile Map Gaps/Artifacts (Cocos2d v0.8.2)

When using TMX Tile Maps, you may notice strange behaviors such as gaps
or artifacts on the map. To resolve it, try the following:

  • Set 2D Projection in the Director
  • Set Alias Parameter for the Tile map (instead of Anti-Alias)
  • If you're updating the camera center/eye, try round your input to an integer instead of passing in a float
  • Disabling Render Subpixel may work as well (Found in: /cocos2d Sources/cocos2d/ccConfig.h)
Hex tiles

Quick hack to add Hex tiles (0.6.3 / 0.7)

  • Edit updateAtlasValueAt (0.7) or updateAltasValues (0.6.3) in TileMapAtlas.m to include the following
float
 offsetX =
 x *
(
 itemWidth *
0.5f +
 (
(
int
)
(
itemWidth /
 4.0f)
)
)
;
float offsetY = y * itemHeight;
 
if ( x % 2 )
{
offsetY = y * itemHeight + 0.5f * itemHeight;
}
 
vertex.bl_x = offsetX; // A - x
vertex.bl_y = offsetY; // A - y
vertex.bl_z = 0.0f; // A - z
vertex.br_x = itemWidth + offsetX; // B - x
vertex.br_y = offsetY; // B - y
vertex.br_z = 0.0f; // B - z
vertex.tl_x = offsetX; // C - x
vertex.tl_y = itemHeight + offsetY; // C - y
vertex.tl_z = 0.0f; // C - z
vertex.tr_x = itemWidth + offsetX; // D - x
vertex.tr_y = itemHeight + offsetY; // D - y
vertex.tr_z = 0.0f; // D - z

From:http://www.cocos2d-iphone.org/wiki/doku.php/tips:tilemapgaps

抱歉!评论已关闭.