Cocos2d-x 游戏实例教程《跑跑跑》1:地图生成和添加主角

2015年03月22日 08:41 0 点赞 0 评论 更新于 2025-11-21 18:02

在这个系列教程中,我们将以游戏《跑跑跑》的开发作为实例,引导大家了解和学习 Cocos2d-x。

1. 新建项目

首先,我们需要把游戏窗口大小设定为 1024 * 640。这可以在 main.cpp 文件中进行修改。代码修改如下(此处假设修改代码的具体示例,实际代码需根据 Cocos2d-x 版本调整):

// main.cpp 中设置窗口大小
glView->setDesignResolutionSize(1024, 640, ResolutionPolicy::SHOW_ALL);

2. 创建筛选器

为了更好地对代码进行分类管理,我们创建一个筛选器。创建筛选器后,项目结构会更加清晰,便于后续的开发和维护。

3. 创建关卡类

在“关卡”筛选器中创建一个类,命名为 TollgateScene。以下是该类的头文件和实现文件的基本代码结构:

TollgateScene.h

#ifndef __TOLLGATE_SCENE_H__
#define __TOLLGATE_SCENE_H__

#include "cocos2d.h"

class TollgateScene : public cocos2d::Scene
{
public:
static cocos2d::Scene* createScene();

virtual bool init();

CREATE_FUNC(TollgateScene);
};

#endif // __TOLLGATE_SCENE_H__

TollgateScene.cpp

#include "TollgateScene.h"

USING_NS_CC;

Scene* TollgateScene::createScene()
{
return TollgateScene::create();
}

bool TollgateScene::init()
{
if (!Scene::init())
{
return false;
}

// 后续地图加载等操作可在此添加
return true;
}

在这个类中,主要关注 init 函数,它是场景初始化的关键函数。CCTMXTiledMap 是 Cocos2d-x 提供的用于加载 tmx 地图文件的类,而 tmx 文件是使用 Tiled Map Editor 制作的。

4. 利用 Tiled Map Editor 创建地图

4.1 新建文件并设置地图参数

打开 Tiled 软件,新建一个文件。将地图设置得长一些,具体参数为宽 120 块,高 20 块,每块的宽和高像素都是 32。这样设置可以创建出一个较大的地图空间,满足游戏的需求。

4.2 打开素材文件

打开素材文件 map.png,该文件包含了用于绘制地图的各种小图片。

4.3 设置图块属性

打开素材文件后,会弹出一个窗口用于设置图块属性。设置图块的宽度和高度为 32,边距和间距为 1。这是因为 map.png 中包含了多个小图片,其宽和高都是 32 像素,设置边距和间距为 1 可以避免这些小图片挤在一起,保证地图绘制的准确性。设置完成后,单击“确定”按钮,即可看到图块添加成功。

4.4 绘制并保存地图

接下来,利用这些素材来绘制自己想要的地图。绘制完成后,将地图保存为 level01.tmx

4.5 设置默认启动场景并运行项目

最后,把默认启动场景设置为 TollgateScene。在 AppDelegate.cpp 中修改代码如下:

#include "TollgateScene.h"

bool AppDelegate::applicationDidFinishLaunching() {
// ... 其他代码
auto scene = TollgateScene::createScene();
director->runWithScene(scene);
// ... 其他代码
return true;
}

运行项目,我们将看到创建好的地图场景。

5. 创建实体类和玩家类

5.1 创建实体类

创建实体类的头文件和实现文件:

Entity.h

#ifndef __ENTITY_H__
#define __ENTITY_H__

#include "cocos2d.h"

class Entity : public cocos2d::Node
{
public:
virtual bool init();

CREATE_FUNC(Entity);
};

#endif // __ENTITY_H__

Entity.cpp

#include "Entity.h"

USING_NS_CC;

bool Entity::init()
{
if (!Node::init())
{
return false;
}

// 实体类的初始化逻辑可在此添加
return true;
}

5.2 创建玩家类

创建玩家类的头文件和实现文件:

Player.h

#ifndef __PLAYER_H__
#define __PLAYER_H__

#include "Entity.h"

class Player : public Entity
{
public:
virtual bool init();

CREATE_FUNC(Player);
};

#endif // __PLAYER_H__

Player.cpp

#include "Player.h"

USING_NS_CC;

bool Player::init()
{
if (!Entity::init())
{
return false;
}

// 玩家类的初始化逻辑可在此添加
return true;
}

6. 修改 TollgateScene 并添加主角

TollgateScene 中添加一个 addPlayer 函数,用于添加主角。以下是修改后的 TollgateScene.cpp 部分代码:

#include "Player.h"
#include "cocos2d.h"

// ... 其他代码

bool TollgateScene::init()
{
if (!Scene::init())
{
return false;
}

addPlayer();

return true;
}

void TollgateScene::addPlayer()
{
auto sprite = Sprite::create("player.png"); // 假设玩家精灵图片为 player.png
auto player = Player::create();
player->addChild(sprite);
this->addChild(player);
}

addPlayer 函数的功能是先创建一个精灵,再创建一个 Player 对象,然后将精灵绑定到 Player 对象上,最后把 Player 对象添加到 Tiled 地图所在的场景中。运行项目,我们将看到一个帅气的主角出现在游戏场景中。

通过以上步骤,我们完成了《跑跑跑》游戏的地图生成和主角添加,为后续的游戏开发打下了基础。

作者信息

boke

boke

共发布了 3994 篇文章