Cocos3.4 横版游戏制作-《KillBear》-添加地图
转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。 此篇为第一篇,我们简单说明一下文件的结构.在新建一个文件的基础上,加入自制的瓦片地图. 开发环境
文件结构 开始制作1.创建项目在文件夹下Shift+右键,选择:在此处打开命令行窗口,新建一个项目 2.获取资源我重新找了主角资源和地图资源,放在附件链接中.(之后可能会在此更新制作资源方法) 代码构建其他OtherAPPDelegate修改APPDelegate.cpp,符合我们的屏幕大小 auto director = Director::getInstance();
auto eglView =director->getOpenGLView();
if(!eglView) {
eglView = GLViewImpl::create("My Game");
eglView->setFrameSize(480,320);
//WIN32下窗体大小,宽高
director->setOpenGLView(eglView);
}
//director->setOpenGLView(eglView);
eglView->setDesignResolutionSize(480,320,ResolutionPolicy::SHOW_ALL);
...
// create a scene. it's an autorelease object
auto scene = GameScene::createScene();
// run
director->runWithScene(scene);
GameSceneGameScene中添加我们需要的层 Scene* GameScene::createScene()
{
auto scene = Scene::create();
auto gamelayer=GameLayer::create();
scene->addChild(gamelayer,0);
auto operateLayer = OperateLayer::create();
scene->addChild(operateLayer,1);
auto statelayer =StateLayer::create();
scene->addChild(statelayer);
return scene;
}
状态StateStateLayerbool StateLayer::init()
{
bool ret = false;
do {
CC_BREAK_IF( !Layer::init() );
ret = true;
} while(0);
return ret;
}
先空着 控制OperateOperateLayerbool OperateLayer::init()
{
bool ret = false;
do {
CC_BREAK_IF( !Layer::init() );
ret = true;
} while(0);
return ret;
}
同上 游戏Game游戏层包含地图层 地图层MapLayer
class MapLayer : public Layer
{
public:
MapLayer();
~MapLayer();
virtual bool init();
void update(float dt);
void setViewpointCenter(Point pos);
CREATE_FUNC(MapLayer);
private:
void initMapWithFile(const char * path);
};
bool MapLayer::init()
{
bool ret = false;
do {
CC_BREAK_IF( !Layer::init() );
this->initMapWithFile("mymap.tmx");//地图初始化
ret = true;
} while(0);
return ret;
}
void MapLayer::initMapWithFile(const char * path)
{
TMXTiledMap *TileMap = TMXTiledMap::create(path);
TileMap->setPosition(Vec2(0,0));
this->addChild(TileMap);
global->tileMap = TileMap;
}
本体GameLayer
#ifndef _GAME_LAYER_H_
#define _GAME_LAYER_H_
#include "cocos2d.h"
USING_NS_CC;
#include "MapLayer.h"
class GameLayer : public Layer
{
public:
GameLayer();
~GameLayer();
virtual bool init();
CREATE_FUNC(GameLayer);
};
bool GameLayer::init()
{
bool ret = false;
do {
CC_BREAK_IF( !Layer::init());
_visibleSize = Director::getInstance()->getVisibleSize();
_visibleOrigin = Director::getInstance()->getVisibleOrigin();
SpriteFrameCache::getInstance()->addSpriteFramesWithFile("Boy.plist","Boy.pvr.ccz");
SpriteFrameCache::getInstance()->addSpriteFramesWithFile("Enemy.plist","Enemy.pvr.ccz");
auto map = MapLayer::create();
this->addChild(map,-100);
ret = true;
} while(0);
return ret;
}
效果至此我们的第一步已经完成了,运行下可以看到一个窗口中间有我们自己制作的地图: 结语这是最简单的部分了,下一篇将加入一个Hero (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |