地图是游戏中不可缺少的元素,cocos2d-x中支持两种瓦片地图集生成的方式,分别是通过.tga文件和.tmx文件(.tga文件已经不是推荐方法,只是为了兼容性的问题继续保留)

1.tga文件


使用方法相对简单,第一个参数是图素文件,第二个参数是tga文件,也就像是地图的图纸一样,后两个参数分别为图素的宽高,tga文件应该是通过photoshop生成,这种方法在现在有tile编辑器的情况下应该已经不太推荐了,效果如下


1.mx文件

用法类似,只是有了地图图素编辑器以后,地图更方便编辑了,用法如下

这个只有一个参数就是tmx文件的路径
地图编辑器的下载地址如下,支持45度角方向和正常方向两个方向,拖动图素向地图编辑区就可以编辑相应地图了,非常方便。
http://www.mapeditor.org/

两种方式的效果如下

45度角

正常

可以把精灵类加入到地图中并且可以通过改变地图与对象的层次来处理精灵对象与地图的遮挡关系,用法如下:

  1. //定义对象并加入到地图中
  2. m_tamara = CCSprite::spriteWithFile(s_pPathSister1);
  3. map->addChild(m_tamara, map->getChildren()->count() );
  4. //改变在地图中的层次
  5. int newZ = 4 - (p.y / 48);
  6. newZ = max(newZ,0);
  7. map->reorderChild(m_tamara, newZ);
  8. 也可以把精灵放入地图中,然后获得再控制精灵
  9. //获得精灵
  10. CCTMXLayer* layer = map->layerNamed("Trees");
  11. m_tamara = layer->tileAt( ccp(29,29) );
  12. m_tamara->retain();
  13. //通过z轴控制遮挡
  14. m_tamara->setVertexZ( -( (p.y+32) /16) );
  15. 可以通过设置摄像机来设置地图的视角
  16. map->getCamera()->getEyeXYZ(&x, &y, &z);
  17. map->getCamera()->setEyeXYZ(x-200, y, z+300); 
  18. 也可以通过设置动作实现缩放
  19. map->runAction( CCScaleBy::actionWithDuration(2, 0.5f) ) ;