转载请注明,原文地址: http://www.benmutou.com/archives/27
文章来源:笨木头与游戏开发

Cocos2d-x游戏实例-《跑跑跑》制作教程

 

笨木头花心贡献,啥?花心?不呢,是用心~ 转载请注明,原文地址http://www.benmutou.com/archives/27

正文:

首先,我是拜读了以下四篇文章之后,想练练手而萌发了要写这个系列的教程,大家如果不喜欢我的教程,可以看看以下四篇教程,同样会获益匪浅的:

http://blog.csdn.net/fengyun1989/article/details/7526333

http://blog.csdn.net/fengyun1989/article/details/7529606

http://blog.csdn.net/fengyun1989/article/details/7534784

http://blog.csdn.net/fengyun1989/article/details/7537602

 

 

以上四篇是很好的一份教程,强烈推荐大家去看看。

我这系列的教程会稍微写得繁琐一些,因为我想写得维护性好一些。

来吧,开始~

 

本教程使用Cocos2d-x 2.0.4版本。

第一个版本的《跑跑跑》源码+资源下载地址:

云盘下载: http://yunpan.cn/lk/sV2K9ZKSnIVMC?sid=301

CSDN下载(稍后补上):http://download.csdn.net/detail/musicvs/4769412

 

Cocos2d-x游戏实例-《跑跑跑》制作教程(第一篇)——加载地图

 

本篇要做的事情很简单,就是利用TiledMap创建一张很长的地图,噗,我就不考虑占内存的因素哈,我还不太懂怎么优化一张大地图的加载。

1.      新建我们的项目

我想把它命名为RunRunRun,是的,我们这是要做一个奔跑游戏,最近有些累,尽情跑一回吧~

2.      稍微调整一些参数,我把屏幕定为800 * 500的大小:

不准问我在哪改啊,我才不会告诉你是在main.cpp里的,然后找到下面两句:

[cce_cpp] CCEGLView* eglView = CCEGLView::sharedOpenGLView(); eglView->setFrameSize(800, 500);</pre> <span style="font-family: Calibri; font-size: 14px;">setFrameSize(800, 500); [/cce_cpp]
OK~
 3. 我们来创建几个文件夹,以便为我们的代码分类: 
《跑跑跑》制作教程(第一篇)截图 

哈哈,是的,接下来我要逐渐建立3块很重要的的模块:场景、实体、控制器。   4. 先不管其他,我们先来创建场景——跑步的场景。 《跑跑跑》制作教程(第一篇)截图 如上图,大家新建一个TollgateScene.cpp以及头文件TollgateScene.h [cce_cpp]// TollgateScene.h

#ifndef __TOLLGATE_SCENE_H__ #define __TOLLGATE_SCENE_H__

#include "cocos2d.h"

using namespace cocos2d;

class TollgateScene : public CCLayer { public: CREATE_FUNC(TollgateScene);

virtual bool init(); static CCScene* scene();

};

#endif [/cce_cpp] [cce_cpp]// TollgateScene.cpp

#include "TollgateScene.h"

CCScene* TollgateScene::scene() { CCScene* mScene = CCScene::create();

TollgateScene* mLayer = TollgateScene::create();

mScene->addChild(mLayer);

return mScene; }

bool TollgateScene::init() { CCTMXTiledMap* map = CCTMXTiledMap::create("map/level01.tmx"); this->addChild(map); return true; } [/cce_cpp]
  代码很简单,我不做过分的解释,主要看看init函数。 CCTMXTiledMapcocos2d-x提供给我们用来加载tmx地图文件的,tmx地图文件从哪里来呢?我要介绍一个很厉害的软件了: Tiled Map Editor。很厉害的,官网是: http://www.mapeditor.org/ 大家下载一下,我们要利用它来创建我们的地图,也就是上面代码里的level01.tmx文件。   

5.      Tiled Map Editor创建地图文件

打开这个软件,新建一个文件,我们的把地图设长一点,宽120块,高20块,宽高像素都是32 《跑跑跑》制作教程(第一篇)截图  

我们需要一些素材(请下载游戏demo源码,里面的resource文件夹有素材):

《跑跑跑》制作教程(第一篇)截图    

ground.png图片拖入软件的图块区域:

《跑跑跑》制作教程(第一篇)截图  

块的宽高都是32像素,点确定,ok~

《跑跑跑》制作教程(第一篇)截图  

现在我们可以开始创建我们的地图了,在图块里选择一个元素,然后就可以在地图区域绘制地图: 《跑跑跑》制作教程(第一篇)截图  

下面是我画的(很丑,不要介意~噗): 《跑跑跑》制作教程(第一篇)截图  

6.      准备运行项目

现在,把我们的level01.tmx以及ground.png文件放到项目资源目录下,我建了一个map目录:Resourcesmap,地图的资源都放这了。 然后,还记得我们要怎么加载地图吗? [cce_cpp]bool TollgateScene::init() { CCTMXTiledMap* map = CCTMXTiledMap::create("map/level01.tmx"); this->addChild(map); return true; } [/cce_cpp]
  然后把我们默认启动场景设置为TollgateScene  
[cce_cpp]bool AppDelegate::applicationDidFinishLaunching()
{
    // initialize director
    CCDirector *pDirector = CCDirector::sharedDirector();
    pDirector->setOpenGLView(CCEGLView::sharedOpenGLView());

CCEGLView::sharedOpenGLView()->setDesignResolutionSize(1024, 640, kResolutionExactFit);

// turn on display FPS pDirector->setDisplayStats(true);

// set FPS. the default value is 1.0/60 if you don't call this pDirector->setAnimationInterval(1.0 / 60);

// create a scene. it's an autorelease object CCScene *pScene = TollgateScene::scene();

// run pDirector->runWithScene(pScene); return true; } [/cce_cpp]
  OK,编译运行,我们会看到我们的地图,帅呆了,噗才怪啊~!丑死了~ 
《跑跑跑》制作教程(第一篇)截图  

7. 部分朋友可能会报错

也许有人运行项目时会报错,说找不到png图片,没关系,用文本编辑器打开我们level01.tmx文件,找到下面这段数据:
<tileset firstgid="1" name="ground" tilewidth="32" tileheight="32">
  <image source="ground.png" width="420" height="316"/>
 </tileset>
看看我们的image source里的ground.png是不是绝对路径,是的话,改成相对路径。

 

 

下一篇我们将加入我们的主角,这可不会太简单呢,因为我们要设计地更好维护一些。

 (发布时间:也许是今天晚上,不,一定是今天晚上~)

 
26 条评论
  • Cocos2d-X游戏开发-《跑跑跑》(2)-Ocrosoft 2016-11-14 15:34:43

    […] /*本文章属于半转载文章,原文地址为http://www.benmutou.com/archives/28,在网站有源码和素材的下载,这里就不贴了*/ /*原文是使用Cocos2d-X 2.0.4版本编写的,而现在已经更新到3.10版本了,很多写法不再适用,所以这里进行重写(原来不是我写的能叫重写?)*/ /*因为我写的时候已经做完了,但是新建一个工程再写一遍实在太浪费时间,所以就直接写了,有些地方可能不太对,有问题请尽管提出来,我去找找哪里不对。*/ […]
    0回复
  • Cocos2d-X游戏开发-《跑跑跑》(1)-Ocrosoft 2016-11-13 20:01:15

    […] /*本文章属于半转载文章,原文地址为http://www.benmutou.com/archives/27,在网站有源码和素材的下载,这里就不贴了*/ […]
    0回复
  • AAA 2013-11-21 13:57:51

    vs2012怎么把类建到那几个目录下呢?vs用得好不习惯....
    0回复
    • 博主 糟糕_树叶的mut 2013-11-21 16:10:04

      vs有个“新建筛选器”的功能,可以新建虚拟目录,然后在这些目录上面右键新建项就好了~
      0回复
      • AAA 2013-11-21 21:13:32

        谢谢,被它那个类干扰了,老是建不对地方,和eclipse差太大了。
        0回复
        • 博主 糟糕_树叶的mut 2013-11-21 22:33:01

          我也是Java出身的,一开始确实十分不习惯vs,用多了就感觉还是挺方便的~不过新建类的时候始终是没有eclipse方便
          0回复
  • 董炯 2013-09-10 21:47:32

    你好,教主。我按照你的步骤做了一下,我想问一下,最后那个“把我们默认启动场景设置为TollgateScene:”这是在AppDelegate.cpp里改吧?把这句: CCScene *pScene = HelloWorld::scene();改为:CCScene *pScene = TollgateScene::scene();。。我是这么改的,但是编译的时候提示出错:error C2653: “TollgateScene”: 不是类或命名空间名称。这是什么原因呢???恳请解释一下啊。本人新手,某有经验
    0回复
    • 博主 糟糕_树叶的mut 2013-09-11 08:18:24

      O_O!头文件include了吗?
      0回复
      • Running Boy 2013-09-11 13:17:56

        在AppDelegate.cpp里#include TollgateScene.h以后,编译成功,但是ctrl+F5执行时却没有反应,很无语 啊
        0回复
        • 博主 糟糕_树叶的mut 2013-09-11 22:11:13

          噗,慢慢来
          0回复
          • Running Boy 2013-09-13 13:39:41

            现在可以了,是我的地图文件出了些问题。
            0回复
  • myth 2013-08-02 12:08:57

    我是新手,按照教程操作遇到点问题:修改默认启动场景设置为TollgateScene,引用的头文件#include "TollgateScene.h"提示无法打开源文件,不知道是怎么回事?
    0回复
    • 博主 糟糕_树叶的mut 2013-08-02 16:19:26

      你的TollgateScene文件是建在classes目录下么?看看是不是目录不对?~
      0回复
  • lovehzh 2012-12-31 23:25:00

    我很是奇怪,你的高度是20个块,每个像素是32,那么20x32=640,为什么你500的高度可以显示出完整的图片呢?
    0回复
  • musicvs 2013-01-01 09:34:00

    [reply]lovehzh[/reply]
    这个其实是cocosx的屏幕适配功能,它会按照我的窗口大小进行拉伸缩放~
    0回复
  • lovehzh 2013-01-02 17:50:00

    自动适配?需要设置什么属性吗,我就是没有看到自动适配才问这个问题的。
    0回复
  • musicvs 2013-01-03 12:07:00

    [reply]lovehzh[/reply]
    这么配置就可以了(我的是2.0.4版本):
    CCEGLView::sharedOpenGLView()->setDesignResolutionSize(800,500, kResolutionExactFit);

    具体的使用可以查看官方文档,或者百度一下,很多资料的,嘿嘿~
    0回复
  • lovehzh 2013-01-04 13:31:00

    [reply]musicvs[/reply]
    恩 谢了
    0回复
发表评论
粤ICP备16043700号

本博客基于 BlazorAnt Design Blazor 开发