转:cocos2d-x 瓦片地图的黑线及地图抖动解决方案
本文转载自 cocos2d-x 瓦片地图的黑线及地图抖动解决方案
BUG 1:地图的每个图块之间有一些细密的间隔,特别是场景移动时更加明显,将游戏截图放大,可以很明显看到这个细线
解决方案:通过设置ccConfo.h中的CC_FIX_ARTIFACTS_BY_STRECHING_TEXEL宏来解决。
将 #define CC_FIX_ARTIFACTS_BY_STRECHING_TEXEL 0
改为 #define CC_FIX_ARTIFACTS_BY_STRECHING_TEXEL 1
ccConfig.h位置:/cocos2dx/include/ccConfig.h
解决大致原理是将贴图的适用范围改成99%,将纹理的四边形的范围缩小一圈
BUG2: 场景发生滚动过程中地图会抖动
解决方案:我们可以通过给TiledMap的每个图层的纹理开启抗锯齿效果来解决这个问题
具体代码如下:
CCArray *pChildrenArray = map->getChildren();
CCSpriteBatchNode *child = NULL;
CCObject *pObject = NULL;
CCARRAY_FOREACH(pChildrenArray,pObject){
child = (CCSpriteBatchNode *)pObject;
if(!child)
break;
child->getTexture()->setAntiAliasTexParameters();
}
摘自《cocos2d-x 手机游戏开发》
下面是我自己的一点补充:
上面所说的瓦片地图的问题适用于cocos2d::TMXTiledMap,但是不适用于cocos2dx 3.2版本后出现的cocos2d::CCFastTMXTiledMap,如果使用的是快速瓦片地图的话,我找到的解决黑线的办法是在创建瓦片地图的新图块的时候,将边距和间距分别设置为 1像素,这样生成的tmx文件则不会产生黑线的情况。