以下步骤主要参考游戏实例-《跑跑跑》制作教程(第一篇)——加载地图。不多说,直接步骤。
一、创建工程。
工程名SimpleChess。
二、添加类ChessScene。
1、功能
类ChessScene主要作为程序的入口管理、游戏UI加载。
2、步骤
(1)在ChessScene.h中加入头文件
#include "cocos2d.h"
using namespace cocos2d;
(2)定义
ChessScene继承自CCLayer。
class ChessScene:public CCLayer
(3)
在ChessScene.h加入函数声明
CREATE_FUNC(ChessScene); // 相当于重写CCLayer中的create函数,让create函数返回子类对象。
virtual bool init(); // 初始化,可以在这里创建精灵
static CCScene* scene(); // 在这里要自己新建一个CCScene类,然后把我们自定义的场景类作为一个CCLayer添加到这个CCScene类中
(4)
在ChessScene.cpp实现函数声明
CCScene* ChessScene::scene()
{
CCScene *mScene = CCScene::create(); //创建了一个真正的CCScene类
ChessScene *mLayer = ChessScene::create(); //ChessScene作为一个layer(一个层),它被添加到刚刚创建的那个CCScene类了。
mScene->addChild(mLayer);
return mScene;
}
bool ChessScene::init()
{
CCTMXTiledMap *map = CCTMXTiledMap::create("map/chessboard.tmx"); //添加地图
this->addChild(map);
return true;
}
(5)在AppDelegate.cpp中加入ChessScene头文件。并修改代码:
// create a scene. it's an autorelease object
CCScene *pScene = HelloWorld::scene();
为:
// create a scene. it's an autorelease object
CCScene *pScene = ChessScene::scene();
(6)为了适应所画地图的大小,修改了main.cpp中设置大小的函数其设置为:setFrameSize(641, 641);
三、制作地图
我认为我无法将作图这个过程写的好过Tiled Map Editor(一) ,故我只表述下我做得图片的注意点。
1、注意点
(1)自己制作的棋盘图片资源链接地址(发现CSDN博客不支持上传附件,而且开始上传的貌似CSDN给我直接给干掉了,可能觉得我那个图片在坑人呜呼,所以此处将教程三中的图片也加载到了相应资源,希望别又给我删除了啊):棋盘图片资源
(2)我新建的Tiled的宽度是20,高度是20。(可直接打开地图源文件查看处理方式,或者参考推荐的教程拷贝对应图片与地图资源到响应目录)
(3)在对象层加入了21个对象(如果对于我要加入对象,或者怎么添加与操作这些对象上有疑问,在上面推荐的两个教程中都写到了,而且我认为他们比我写的好,故不多累赘),目的在于获取棋盘中可放置棋子的坐标值。其21个对象命名如下图:
2、遇到过的问题及解决办法
(1)因不熟悉Tiled,第一次参考上面推荐教程时只拷贝了.tmx地图文件到指定目录,程序根本无法运行。后仔细读推荐教程《跑跑跑》中第7小点,得以解决。
(2)在Tiled中,开始我新建了两个图层background、chessboard和一个对象图层chessmansObject。结合后面加载棋子的时候,棋子总是无法完全显示,总只显示部分,后来我将background、chessboard合并之后,得以解决。
四、执行效果图