cocos2d 瓦片地图用在什么地方
地图是游戏中不可或缺的元素。在 cocos2d-x 中,支持两种瓦片地图集的生成方式,分别是通过 .tga 文件和 .tmx 文件。不过,.tga 文件生成方式已不再被推荐,仅为了兼容性问题而保留。
1. .tga 文件生成方式
使用方法
这种方式相对简单。在使用时,第一个参数是图素文件,第二个参数是 .tga 文件,该 .tga 文件类似于地图的图纸。后两个参数分别为图素的宽度和高度。通常,.tga 文件是通过 Photoshop 生成的。但在如今有了专业的 tile 编辑器的情况下,这种方法已不太常用。
效果说明
虽然文中未详细描述其具体效果,但在实际应用中,它能生成基础的瓦片地图。
2. .tmx 文件生成方式
使用方法
该方式的用法与 .tga 文件生成方式类似。不过,在有了地图图素编辑器之后,使用 .tmx 文件编辑地图变得更加便捷。其使用时只有一个参数,即 .tmx 文件的路径。
地图编辑器
支持 45 度角方向和正常方向两个方向的地图编辑。用户只需将图素拖动到地图编辑区,就可以编辑相应的地图,操作十分方便。地图编辑器的下载地址为:http://www.mapeditor.org/
两种方式的效果
这两种方式生成的地图效果有所不同,分别呈现 45 度角和正常方向的视觉效果。
精灵与地图的交互
精灵加入地图及层次处理
可以将精灵类加入到地图中,并且通过改变地图与对象的层次来处理精灵对象与地图的遮挡关系。以下是示例代码:
// 定义对象并加入到地图中
m_tamara = CCSprite::spriteWithFile(s_pPathSister1);
map->addChild(m_tamara, map->getChildren()->count());
// 改变在地图中的层次
int newZ = 4 - (p.y / 48);
newZ = max(newZ, 0);
map->reorderChild(m_tamara, newZ);
精灵的获取与控制
也可以先把精灵放入地图中,然后获取并控制该精灵。示例代码如下:
// 获得精灵
CCTMXLayer* layer = map->layerNamed("Trees");
m_tamara = layer->tileAt(ccp(29, 29));
m_tamara->retain();
// 通过 z 轴控制遮挡
m_tamara->setVertexZ(-((p.y + 32) / 16));
地图视角与缩放控制
视角控制
可以通过设置摄像机来设置地图的视角,示例代码如下:
map->getCamera()->getEyeXYZ(&x, &y, &z);
map->getCamera()->setEyeXYZ(x - 200, y, z + 300);
缩放控制
还可以通过设置动作实现地图的缩放,示例代码如下:
map->runAction(CCScaleBy::actionWithDuration(2, 0.5f));
综上所述,cocos2d-x 中的瓦片地图通过 .tga 和 .tmx 文件生成,并且能与精灵进行交互,同时支持视角和缩放的控制,为游戏开发提供了丰富的地图制作和交互功能。