tiled地图编辑器下载怎么用

游戏地图编辑器使用指南_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
游戏地图编辑器使用指南
上传于||文档简介
&&游​戏​地​图​编​辑​器​使​用​指​南
大小:5.17KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢Cocos2d-x 3.x基础学习:瓦片地图TiledMap - cocos2dx技术 - 泰课在线 - 国内最大的Unity在线学习平台|Unity3d培训|Unity教程|Unity教程 Unreal 虚幻 AR|移动开发|美术CG|UI平面设计|前端开发 - Powered By EduSoho
Cocos2d-x 3.x基础学习:瓦片地图TiledMap
& & & & 有谁还记得小时候玩的小霸王里的游戏?比如坦克大战、冒险岛、魂斗罗、吞食天地等,他们大部分都是基于Tile地图的游戏。但在手游中,基于瓦片地图的游戏很常见。如:《保卫萝卜》。
瓦片地图有专门的地图编辑器:Tiled Map Editor 。
先给大家看个酷炫的图吧。
此图来自:Cocos2d-x初入学堂(13)--&Tiled Map Editor地图编辑器
【代码实践】
瓦片地图的应用十分广泛,其知识点也非常丰富。
所以我建议在代码实践中,边写边学,并掌握其基本的用法。
然后再深入研究,效果更佳。
推荐教程: 如何使用Cocos2d-x 3.0制作基于tilemap的游戏
【瓦片地图——概念篇】
在看这部分的概念知识之前,首先保证你已经学习过上面代码实践中推荐的那篇教程。
因为接下来本文所要介绍的知识是:对瓦片地图基本概念的总结以及深化。
本文不再赘述地图编辑器如何使用,或是怎么将瓦片地图导入Cocos工程中使用,之类的问题。
1、地图格式
(1)支持 TMX文件格式 的瓦片地图。(这也是推荐使用的文件格式)
(2)建议瓦片的块大小为32 * 32的倍数。
2、地图方向
地图编辑器可以制作三类地图:普通地图(直90°) 、 斜45°地图 、 斜45°交错地图。
除此之外,而Cocos引擎还支持六边形地图。
(1)普通地图(直90°)
(2)斜45°地图
(3)斜45°交错地图
(4)支持六边形地图
3、瓦片地图坐标系
瓦片地图的坐标系为:
& 原点:在左上角。
& 单位:瓦片数量。
& X轴正方向:从左到右。
& Y轴正方向:从上到下。
例如:对于一个 10*10 的瓦片地图文件的坐标系统为:(0, 0)左上角、(9, 9)右下角。
PS:具体坐标表示,已在上面的几幅图中标出。
另外,在地图编辑器中,其实也已经标出了瓦片的坐标。
鼠标移动到某瓦片格子上,左下角就会显示格子的坐标,以及所使用的瓦片素材的GID(关于GID,后面会介绍)。
如下如所示,被选中瓦片格子的坐标为(2,3),所使用的瓦片素材GID为29。
4、地图层(TMXLayer)
瓦片地图支持地图层(TMXLayer)、对象层(TMXObjectGroup)。
(1)每一个地图层可以被表示为TMXLayer类,并设置了名称。(如下图有三个地图层:Meta、Foreground、BackGround)。
(2)每一个单一的瓦片被表示为Sprite类,父节点为TMXLayer。
(3)每一个地图层只能由一套瓦片素材组成,否则会出问题。(如下面的右图所示,有两套瓦片素材(tile、meta),但是一个地图层只能使用一套瓦片素材)。
5、对象层(TMXObjectGroup)
(1)用来添加除背景以外的游戏元素信息,如道具、障碍物等对象。
(2)一个对象层可以添加多个对象,每个对象的区域形状的单位是:像素点。
(3)对象层中的对象在TMX文件中以 键值对(key-value)形式存在,因此可以直接在TMX文件中对其进行修改。
6、瓦片的全局标识GID
在Cocos游戏中,每一个瓦片素材都有一个全局唯一标识GID,而瓦片的GID就是表示该瓦片所使用的是哪个GID的图块素材。(如上面第三小节提到的那幅图)
GID的计数从1开始,按顺序编号,一直编号到图块的总数量。如下图的tile图块资源中的 ID = 0 的图块编号 GID = 1,以此类推……
tile图块资源中最后一个 ID = 47 的图块对应的GID = 48。
然后对于第二套meta图块资源中的 ID = 0 的图块,对应的 GID = 49。(是的,继续编号下去……)
7、瓦片地图的属性值(Properties)
瓦片地图由许多模块构成(瓦片地图、地图层、对象层、瓦片图块、瓦片、对象),其结构图见下面《代码篇》那张图。
每一个模块都可以设置自定义的属性值(Custom
Properties)。我想你在学习《代码实践》中那篇教程时,肯定也设置了自定义的属性。(给瓦片图块设置“碰撞检测”属性、给对象层的某一对象设置“敌人类型”属性等等……)
这些自定义的属性可以在地图编辑器中进行设置,并且可以在代码中获取这些属性以及对应的属性值。
只要点击“目标”,就可以看到它的属性,并且可以添加自定义属性(Custom Properties)。
【瓦片地图——代码篇】
瓦片地图的整体结构图如下:
1、TMXTiledMap
TMXTiledMap类为瓦片地图类。其中包含了所有的地图层、对象层、以及瓦片地图的尺寸信息。
& MapSize :瓦片地图的尺寸。(以瓦片数量为单位)
& TileSize :瓦片的尺寸。(以像素点为单位)
核心函数如下:
class CC_DLL TMXTiledMap : public Node {
* 创建TMX瓦片地图
// 使用 .tmx 格式的文件创建瓦片地图
static TMXTiledMap* create(const std::string& tmxFile);
* 获取瓦片地图的属性信息
// 获取 瓦片地图的指定名称的属性值
Value getProperty(const std::string& propertyName)
// 获取 瓦片地图的所有属性。(键-值对)
void setProperties(const ValueMap& properties); // 可以修改属性
ValueMap& getProperties();
// 获取 瓦片地图的尺寸。(单位:瓦片数量,而不是像素)
void setMapSize(const Size& mapSize);
Size& getMapSize()
// 获取 单个瓦片的尺寸。(单位:像素)
void setTileSize(const Size& tileSize);
Size& getTileSize()
// 通过GID获取图块的属性,返回Value字典。
// 其实返回的是:ValueMap,即(键-值对)。
Value getPropertiesForGID(int GID)
* 获取地图层、对象层
// 获取 指定名称的地图层 TMXLayer
TMXLayer* getLayer(const std::string& layerName)
// 获取 指定名称的对象层 TMXObjectGroup
TMXObjectGroup* getObjectGroup(const std::string& groupName)
// 获取 瓦片地图的所有对象层。返回对象数组 Vector
void setObjectGroups(const Vector& groups);
Vector& getObjectGroups()
2、TMXLayer
TMXLayer类为地图层类。包含了该地图层中,每个瓦片格子的信息。
& 每一个瓦片(Tile):都被表示为Sprite类。
核心函数如下:
class CC_DLL TMXLayer : public SpriteBatchNode {
* 获取地图层的属性信息
// 获取 地图层的名字
void setLayerName(const std::string& layerName); // 可以重新设置地图层名字
std::string& getLayerName();
// 获取 地图层的propertyName属性值
Value getProperty(const std::string& propertyName)
// 获取 地图层的所有自定义属性字典。(键-值对)
void setProperties(const ValueMap& properties);
ValueMap& getProperties();
// 获取地图层尺寸。一般等于瓦片地图的尺寸。(单位:瓦片数量)
void setLayerSize(const Size& size);
Size& getLayerSize()
// 设置瓦片尺寸的大小。一般与瓦片地图的瓦片尺寸是一样的。(单位:像素)
void setMapTileSize(const Size& size);
Size& getMapTileSize()
* 对地图层的瓦片进行操作
// 获取 指定tile坐标的瓦片(Sprite)
Sprite* getTileAt(const Vec2& tileCoordinate);
// 可通过调用如下对其进行删除:
// layer-&removeTileAt(Vec2(x,y));
// 或 layer-&removeChild(sprite, cleanup);
void removeTileAt(const Vec2& tileCoordinate);
void removeChild(Node* child, bool cleanup)
// 获取 指定tile坐标的瓦片对应的OpenGL坐标位置
Vec2 getPositionAt(const Vec2& tileCoordinate);
// 设置 指定tile坐标的瓦片,将其图片变为GID的图块。
void setTileGID(uint32_t gid, const Vec2& tileCoordinate);
// 获取 指定tile坐标的瓦片,所使用的图块的GID。
uint32_t getTileGIDAt(const Vec2& tileCoordinate);
3、TMXObjectGroup
TMXObjectGroup类是对象层类。包含了该对象层中,每个对象的信息。
& 每一个对象:其所有属性,被存储为ValueMap,即 键-值对 的映射。
核心函数如下:
class CC_DLL TMXObjectGroup : public Ref {
* 获取对象层的属性信息
// 获取 对象层的名称
void setGroupName(const std::string& groupName); // 可以重新设置对象层名称
std::string& getGroupName();
// 获取 对象层的propertyName属性值
Value getProperty(const std::string& propertyName)
// 获取 对象层所有属性。(键-值对)
void setProperties(const ValueMap& properties);
ValueMap& getProperties();
* 获取对象层的属性信息
// 获取对象层指定的objectName对象,其所有属性被存储为ValueMap(键-值对)
ValueMap getObject(const std::string& objectName)
// 获取对象层的所有对象
void setObjects(const ValueVector& objects);
ValueVector& getObjects();
4、关于瓦片地图的锚点位置
瓦片地图的锚点默认为( 0,0),每个瓦片的锚点默认也为(0,0)。
PS:锚点是可以设置的,因为它不是继承于Layer,而是直接继承于Node。
下面讲解一下默认锚点的位置信息。
(1)普通瓦片锚点信息
(2)斜45°瓦片锚点信息
(3)斜45°交错瓦片锚点信息
5、Tile坐标 与 OpenGL坐标 相互转换
这里介绍一下普通瓦片(直90°)的坐标转换。
至于,斜45°的瓦片地图,自己推公式把。。。
// OpenGL坐标:原点为屏幕左下角(单位:像素)
// tile坐标:原点为瓦片地图的左上角(单位:瓦片)
// OpenGL坐标 转成 格子坐标
Vec2 tileCoordForPosition(const Vec2& position) {
Size mapSize = tiledMap-&getMapSize();
Size tileSize = tiledMap-&getTileSize();
int x = position.x / tileSize.
int y = (mapSize.height * tileSize.height - position.y) /
return Vec2(x, y);
// tile坐标 转成 瓦片格子中心的OpenGL坐标
Vec2 positionForTileCoord(const Vec2& tileCoord) {
Size mapSize = tiledMap-&getMapSize();
Size tileSize = tiledMap-&getTileSize();
int x = tileCoord.x * tileSize.width + tileSize.width/2;
int y = (mapSize.height - tileCoord.y) * tileSize.height -
tileSize.height/2;
return Vec2(x, y);
6、遮罩关系
瓦片地图可以包含许多个地图层,那么地图层的遮罩关系是怎么确定的呢?
(1)地图层之间的遮罩关系
如下图所示,每个地图层的 zOrder(渲染顺序)会根据在地图编辑器中设置的前后关系进行设置。由下往上设置 zOrder 值,最靠后的 zOrder
= 0,随后每个图层zOrder+1。
(2)瓦片之间的遮罩关系
其 zOrder(渲染顺序)的值如下所示。
也就是说渲染顺序为:从左往右,从上到下。
即:下边的瓦片可以遮住上边的瓦片,右边的瓦片可以遮住左边的瓦片。
【函数使用举例】
1、瓦片地图类(TMXTiledMap)
// TMXTiledMap::create()
// 加载TMX瓦片地图
tileMap = TMXTiledMap::create("TileMap.tmx");
this-&addChild(tileMap, -1);
// tileMap-&getMapSize()、getTileSize()
// 获取一个瓦片的尺寸
tileSize = tileMap-&getTileSize();
// 获取地图的尺寸大小(转为像素点大小)
// tileMap-&getMapSize() 为获取地图宽高的瓦片数量
tileMapSize = Size(tileMap-&getMapSize().width * tileSize.width,
tileMap-&getMapSize().height * tileSize.height);
// tileMap-&getPropertiesForGID()
// 获取图块素材的 GID=49 的所有自定义属性
auto properties = tileMap-&getPropertiesForGID(49).asValueMap();
for(auto& value : properties) {
CCLOG("Properties:%s, %s", value.first.c_str(),
value.second.asString().c_str());
// tileMap-&getLayer()
// 获取背景层、前景层、元层
backGround = tileMap-&getLayer("Background");
foreGround = tileMap-&getLayer("Foreground");
meta = tileMap-&getLayer("Meta");
// tileMap-&getObjectGroup()
// 获取对象层
objects = tileMap-&getObjectGroup("Objects");
2、地图层类(TMXLayer)
// backGround-&getTileAt()
// 获取瓦片(Sprite),进行放缩
Sprite* sp = backGround-&getTileAt(Vec2(2, 19));
sp-&setScale(2.0f);
// backGround-&setTileGID
// 将(5,17)位置的瓦片,图片设置为 GID=46 的图块素材
unsigned int gid = 46;
backGround-&setTileGID(gid, Vec2(5, 17));
// backGround-&getTileGIDAt
// 获取(2,19)位置的瓦片,所使用的图块素材的GID
gid = backGround-&getTileGIDAt(Vec2(2, 19));
CCLOG("gid = %d", gid);
3、对象层类(TMXObjectGroup)
// objects-&getObject()
// 获取HeroInfo对象
ValueMap heroInfo = objects-&getObject("HeroInfo");
// 获取坐标 x,y 属性
float x = heroInfo["x"].asFloat();
float y = heroInfo["y"].asFloat();
// 创建主角
hero = Sprite::create("Player.png");
hero-&setPosition(x, y);
tileMap-&addChild(hero);
// objects-&getObjects()
// 添加敌人
// getObjects:获取对象数组 ValueVector
for (auto&enemy : objects-&getObjects()) {
// 获取对象的属性
ValueMap& dict = enemy.asValueMap();
if (dict["Enemy"].asInt() == 1) { // 自定义属性“Enemy”
x = dict["x"].asFloat(); // x坐标
y = dict["y"].asFloat(); // y坐标
this-&addEnemyAtPos(Vec2(x, y));
后发表看法
Unity VIP会员①群
Unity VIP会员②群
HTML5公开课①群(hot!)
HTML5公开课②群(new!)
Cocos2dx公开课①群(hot!)
Unity公开课①群(2000人群)
Unity公开课②群(2000人群)
Unity公开课③群(2000人群)
Unity公开课④群(2000人群)
泰斗社区求职招聘①群
工作时间: 9:00 - 17:00
北京客服: 010 -
广州客服: 020 -评论 - 1133& & & & 图:& & & & 程序代码:& & 头文件声明函数及变量& & ?& & 1& & 2& & 3& & 4& & 5& & 6& & 7& & 8& & 9& & void registerWithTouchDispatcher(void);& & bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent);& & void ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent);& & void setViewpointCenter(CCPoint position)&;& & void setSpritePoint(CCPoint position) ;& & CCPoint tileCoordForPosition(CCPoint position);& & CCSprite *sprite1;& & CCTMXTiledMap *& & 在init()方法创建tiled地图,获取对象坐标& & ?& & 1& & 2& & 3& & 4& & map = CCTMXTiledMap::create("map1.tmx");& & this->addChild(map);& & CCTMXObjectGroup *object = map->objectGroupNamed("object1");& & CCDictionary *sprite_object = object->objectNamed("sprite1");& & 并加载精灵& & ?& & 1& & 2& & 3& & 4& & 5& & 6& & 7& & 8& & float x = ((CCString*)sprite_object->objectForKey("x"))->floatValue();& & float y = ((CCString*)sprite_object->objectForKey("y"))->floatValue();& & CCLOG("sprite postion x: %f, %f", x, y);& & sprite1 = CCSprite::create("yezhu.png");& & sprite1->setPosition(ccp(x, y));& & this->addChild(sprite1);& & setTouchEnabled(true);&//开启触摸事件& & 然后重载触摸事件& & ?& & 1& & 2& & 3& & 4& & 5& & 6& & 7& & 8& & 9& & void HelloWorld::registerWithTouchDispatcher()& & {& & CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this,0, true);& & }& & bool HelloWorld::ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent)& & {& && & }& & 处理触摸坐标与精灵坐标位置变量, 让精灵跟随触摸点移动& & ?& & 1& & 2& & 3& & 4& & 5& & 6& & 7& & 8& & 9& & 10& & 11& & 12& & 13& & 14& & 15& & 16& & 17& & 18& & 19& & 20& & 21& & 22& & 23& & 24& & 25& & 26& & 27& & 28& & 29& & 30& & 31& & 32& & 33& & 34& & 35& & 36& & 37& & 38& & 39& & 40& & 41& & void HelloWorld::ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent)& & {& & CCPoint touchlocation = convertTouchToNodeSpace(pTouch);& & CCPoint touchsprite =&sprite1->getPosition();& & CCP& & CCLOG("touchlocationX:%f, Y:%f&touchspriteX:%f, Y:%f", touchlocation.x, touchlocation.y, touchsprite.x , touchsprite.y);& & //点击坐标x轴减去精灵x轴 绝对值大于 点击坐标在精灵x轴减去精灵x轴& & if (fabs(touchlocation.x-touchsprite.x) > fabs(touchlocation.y-touchsprite.y))& & {& & //点击的坐标x轴大于精灵x轴 在精灵的右侧& & if (touchlocation.x > touchsprite.x)& & {& & mpoint = ccp(touchsprite.x+32, touchsprite.y); //精灵x轴递增移动& & }& & else//点击的坐标x轴小于精灵x轴 在精灵的左侧& & {& & mpoint = ccp(touchsprite.x-32, touchsprite.y);&//精灵x轴递减移动& & }& & }& & //点击坐标x轴减去精灵x轴 绝对值小于 点击坐标在精灵x轴减去精灵x轴& & else& & {& & //点击的坐标y轴大于精灵y轴 在精灵的上侧& & if (touchlocation.y > touchsprite.y)& & {& & mpoint = ccp(touchsprite.x, touchsprite.y+32);&//精灵y轴递增移动& & }& & else //点击的坐标y轴小于精灵y轴 在精灵的下侧& & {& & mpoint = ccp(touchsprite.x, touchsprite.y-32);&//精灵y轴递减移动& & }& & }& & setSpritePoint(mpoint);//设置新坐标移动精灵,并检测碰撞& & CCPoint sp_point = sprite1->getPosition();& & setViewpointCenter(sp_point); //设置视图中心点& & }
声明:该文章系网友上传分享,此内容仅代表网友个人经验或观点,不代表本网站立场和观点;若未进行原创声明,则表明该文章系转载自互联网;若该文章内容涉嫌侵权,请及时向
上一篇:下一篇:
相关经验教程
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益地图编辑器(Tiled) 0.10.2 中文免费版
地图编辑器(Tiled) 软件介绍 Soft content
地图编辑器(Tiled)是一个简单直观的中文游戏地图编辑器,帮助创建属于你自己的游戏地图。
风格类似mini版的Photoshop。它可以用于制作多种类型的游戏引擎需要,而且支持使用插件读写map、增加用于引擎的map格式。
它是一款独立的地图编辑器,并不属于某一款游戏或者引擎。读者下载到的它的运行版本或者源代码,同时推出了Windows系统与Mac系统的两个版本。新一代砖块地图编辑器采用了QT的渲染内核。它的主要功能是将充分利用砖块地图的实现技术,为游戏的制作人员提供一个快速便利、可操作的地图编辑器。它需要使用图片资源作为游戏地图中的砖块元素,然后设计人员可以使用砖块元素来拼接游戏中的地图背景画面,最后将拼接完成的地图数据导出为文件,以便提供给游戏引擎使用。
此款地图编辑器,它支持正方形、菱形以及正六边形的砖块图形。这三种图形的砖块能够拼接出三种不同视觉的游戏背景地图。
Tile Map Editor其他功能:
Tile Map Editor(砖块地图编辑器)还提供一些其他的功能。例如在地图添加事物元素并可以设置它们的属性,可以将地图划分为不同的层次,支持多层地图和碰撞层信息。它提供了多个语言版本,其中就有我们喜闻乐见的简体中文。还犹豫什么,没有比它更适合的地图编辑器了,赶快下载安装吧!否则,你就需要拿出尺子和铅笔,自己画一张游戏地图了。
技巧:如果读者真要打算手绘砖块地图的话,最好再准备一块橡皮吧!
在Tile Map编辑器中,开发者可以编辑俯视角度和斜45°的图块拼接地图,同时它支持多个图层的叠加。另外,在编辑器中还提供了一些额外的功能。比如允许开发者添加触发区域和物体,也可以为图块拼接添加代码中所需的用来判断图块拼接类型的属性,也可以为每个地图添加属性值。Tile Map还支持了多种地图背景的导出格式。不过它们都是通过TMX文件来存储的。下面就为读者展示一下,如何使用Tile Map Editor来拼接一张游戏背景图。
Tile Map Editor提供了很多的演示项目。接下来就以其中的一个简单示例项目,来为读者介绍编辑器的基本操作。在下载安装之后,读者就可以运行Tile Map Editor。第一次运行的界面空无一物,此时读者可以选择打开安装路径下的\examples\desert.tmx文件。读者也可以直接将文件拖到编辑器界面当中。然后就会看到如下的界面。
Tiled Map Editor中一个沙漠的游戏地图。这种地图的拼接方式与《超级玛丽》、《魂斗罗》、《坦克大战》、《塞尔达传说》、《星际争霸》、《文明》等等知名的游戏一样。此时读者会不会有些兴奋?因为你将要使用与这些经典游戏同样的实现技术。这就是前人栽树,后人乘凉。没有Tile Map Editor和Cocos2D-X引擎的支持,怎么能如此轻松地就实现了砖块地图技术呢?这才刚刚开始,不要骄傲,要想制作一款全球知名的畅销游戏,可不只是依靠先进的技术就行的。虽然这些典型的游戏都是使用的砖块拼接游戏背景,但是读者要想制作出高水平的背景地图还需要更多的努力和经验。
注意:虽然都是采用砖块拼接地图的技术,但是每款游戏的实现方式也存在差异。
先来介绍一下图6-6中展示的编辑器界面。编辑器操作界面分为了三个部分。这三个部分已经在图中用文字标出,它们为地图编辑区、图层列表和砖块元素。这三个区域将是开发者主要操作的内容。配合界面顶部的菜单栏和工具栏,我们就可以制作出精良的游戏背景了。
砖块拼接地图背景:
Tile Map Editor只支持以砖块拼接地图背景的方式。其实Cocos2D-X引擎中也支持此种方式。并不是因为开发者的懒惰,而是砖块拼接的方式几乎涵盖了所有的游戏类型背景画面。前面已经为读者讲述过砖块拼接的优缺点。此技术的好处是能够节省图片和在有限的图块元素基础上,设计人员可以随意地拼接创造无限的、富于变化的地图背景。
技巧:在拼接的过程中,设计人员可以创建一小片区域,然后重复利用这片区域。
读者看图6-6中地图编辑区域,这正是设计人员利用砖块元素拼接而来的游戏地图背景。凭借Cocos2D-X引擎的功能,开发者能够在游戏中展现出完全一样的游戏背景。界面右边砖块元素区域内放置着相同的尺寸大小的砖块。它们是由一张纹理图片切割而来。毫无疑问,地图编辑区内的每一个图块都可以在这里找到对应的砖块元素。这也是砖块地图的精髓所在。在游戏背景中可以看出被重复使用的砖块元素。这就利用基本元素通过不同的组合拼凑出了更大的画面。每个砖块在地图背景中都可以被重复利用。
另外,因为它们都来源自一张图片,所以其在内存中只占有一份空间。这张图片就是由美术人员制作完成的。然后设计人员利用图片中的砖块元素,充分发挥创造力来拼接游戏背景地图。在编辑地图的过程中,设计人员可以利用砖块不同的组合和摆放位置,营造出各种各样不同的效果拼接方式。这是它的优点,同时也是缺点。为了能够拼接背景地图,美术人员的创作就会受到限制。他们不能再绘制那些风格独特、形状复杂的事物。因为要考虑图块必须能够被重复利用以及拼接之后的画面效果。就不得不在画面的精细程度上有所损失,同时拼接的地图背景还存在一定的重复性。这些都是读者在使用之前需要明确的事项。
地图编辑器(Tiled)下载地址[]
* 推荐下载+解压;软件通过+++扫描,问题软件请
从评论反馈
* 本站已不再更新破解相关,若大意发布了相关破解,告知!保证永不再收录!
2.70MB/简体中文/3星
5.90MB/中文/3星
530KB/中文/3星
11.40MB/简体中文/3星
1.49MB/简体中文/3星
220KB/英文/3星}

我要回帖

更多关于 tiled 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信