本教程有考虑新手以及有点基础的入门者。

接下来开始在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()为地图的控制函数,xVelyVel分别为xy方向的速度。为接下来的player的运动准备,现在讲解函数的实现。