本教程有考虑新手以及有点基础的入门者。
接下来开始在win7下搭建cocos2dx的开发环境,请读者下载最新的cocos2dx源码(本人用的是12版),以及vs2010软件。网上有安装教程,不多说地址如下:
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
PS:要是编译不通过,以我的经验看,重新安装一个纯净版的win7系统,先安装显卡驱动后,就可以安装vs2010,然后一步步的来就行,完美解决。
现在正式开始本教程的核心,新建一个项目,添加所需库及头文件,打开HelloWorldScene.h文件添加如下代码:
using namespace cocos2d;
enum
{
kTagTileMap=1,
};
class HelloWorld : public cocos2d::CCLayer
{
public:
virtual bool init();
static cocos2d::CCScene* scene();
virtual void menuCloseCallback(CCObject* pSender);
void update(ccTime dt);
void pmhcollision();
void pmvcollision();
void move();
void MapControl();
float xVel;
float yVel;
bool jump;
char level[20];
int lvl;
CCSprite *player;
LAYER_NODE_FUNC(HelloWorld);
};
先在init()函数中初始化sprite如下:
/*
player= CCSprite::spriteWithFile("grossini.png"); //
CC_BREAK_IF(!player);
player->setPositionInPixels(ccp(32, 30));
player->setAnchorPoint(ccp(0.4f,0));
hero->setPosition(ccp(32,32));
map->addChild(hero,1);
*/
地图的初始化:
int lvl = CCUserDefault::sharedUserDefault()->getIntegerForKey("lvl"); //
//获得玩家数据
if(lvl==0&&lvl==7)
{
lvl=1;
//设置地图
CCUserDefault::sharedUserDefault()->setIntegerForKey("lvl",1); //
}
//
sprintf(level,"lvl%d.tmx",lvl);
CCTMXTiledMap *map = CCTMXTiledMap::tiledMapWithTMXFile(level);
//map->initWithTMXFile(level);
CCLOG("%s",level);//调试模式下才有数据
addChild(map,0,kTagTileMap); //
//设置tag
CCSize s=map->getContentSize();
int mapWidth=map->getMapSize().width*map->getTileSize().width;
int mapHeight=map->getMapSize().height*map->getTileSize().height;
map->setPosition(ccp(0,0));
//设置地图方位,为地图移动设置初始值
map->addChild(player, map->getChildren()->count());
//player需添加到map上才可以
说明:pmhcollision()和pmhcollision()为地图与玩家的碰撞检测算法,mapControl()为地图的控制函数,xVel,yVel分别为x,y方向的速度。为接下来的player的运动准备,现在讲解函数的实现。