cocos2d-x學習之旅(九): 2.2 盤古開天辟地,進入游戲世界


混沌天地,盤古不忍寂寞,打掉自己的牙齒化作一把巨斧劈開天地,創造了宇宙萬物,演化出生機勃勃的大千世界,讓我們來扮演盤古,創造一個嶄新的游戲世界。

在游戲開發過程中,需要了解幾個重要的概念:導演,場景,布景,角色和動作,既然我們扮演盤古,天地的演化就由我們來作主

 

1.CCDirector(盤古):盤古用一把巨斧創造了世界,組織了天地萬物,那么在游戲里,他就是游戲的創世神,制定游戲的規則,讓場景 ,布景和宇宙萬物有序地動作起來

2.CCScene(天地):盤古用身體撐開天地,所謂天地,在游戲里就是我們常見的關卡,關卡主要由布景和角色組成。

3.CCamera(太陽):日升日落,晝夜交替,萬物得以生生不息。在游戲里,不同的角度,旋轉,位置變化,縮放。

4.CCLayer(山川大地): 盤古臨死前,他嘴里呼出的氣變成了春風和天空的雲霧;肌肉變成千里沃野,供萬物生

存。 在游戲里,布景就是在每個場景里的背景,就是山川,大地,天空。

5.CCSprite(眾生萬物):眾生萬物在大地上生活,棲息繁衍,不斷進化,廝殺。游戲里人物行走,雄鷹翱翔,怪物橫行,這些都可以由你自己創造。

6.CCAction(動作):人類誕生,捕殺獵物。在游戲里,要生存,與怪物搏斗,就得擁有各種技能,動作,這就需要CCAction支持。

 

第一步 :在HelloWorld的Init方法里加載游戲背景,用CCSprite加載start.jpg的資源文件作為游戲的開始背景

//加載過場畫面

CCSize size = CCDirector::sharedDirector()->getWinSize();

CCSprite* pSprite = CCSprite::create("start.jpg");

CC_BREAK_IF(! pSprite);

pSprite->setPosition(ccp(size.width/2, size.height/2));

// Add the sprite to HelloWorld layer as a child layer.

this->addChild(pSprite, 0);

 

游戲中只有一個導演,所以CCDirector使用單例模式,為什么會使用單例模式,以及它的好處,我會在后面的章節單獨談到

CCSprite初始化加載資源采用create方法,這是自cocos2d-x2.0后開始采用的,使用了autorelease自動管理內存,所以當我們使

用時不必手動release掉內存

 

clip_image001

第二步:加載游戲的控制菜單

在resoure.h中加入資源文件

static const char s_playfont[] = "fonts/bitmapFontChinese.fnt";

static const char s_start[] = "Start Game";

static const char s_exit[] = "Exit Game";

在加載完過場畫面之后加載菜單

//加載游戲菜單        

CCLabelBMFont* startfontstyle=CCLabelBMFont::create(s_start,s_playfont);

CCMenuItemLabel* startItem=CCMenuItemLabel::create(startfontstyle,this,menu_selector(HelloWorld::menuPlayNewGame));

CCLabelBMFont* exitfontstyle=CCLabelBMFont::create(s_exit,s_playfont);

CCMenuItemLabel* exitItem = CCMenuItemLabel::create(exitfontstyle,this,menu_selector(HelloWorld::menuCloseCallback));

CCMenu* startMenu=CCMenu::create(startItem,exitItem, NULL);

startMenu->alignItemsVertically();

this->addChild(startMenu);

 

游戲的菜單item:

CCMenuItemSprite:使用圖片sprite作為menu的菜單項

CCLabelAtlas:設置好字庫文件,並且以ascii字符排序順序定義好字庫的初始字符,就可以使用字庫創建文本Label

CCMenuItemLabel:以label方式創建的菜單項,會自動以點擊放大作為菜單的操作效果來處理

CCMenuItemFont:普通的文本菜單項

CCLabelBMFont:使用字體的文本菜單項

 

在HelloWorld.h中加入菜單回調方法的聲明

 

    // a selector callback
    void menuCloseCallback(CCObject* pSender);

    void menuPlayNewGame(CCObject* sender);

 

在HelloWorld.cpp中加入菜單回調方法

void HelloWorld::menuCloseCallback(CCObject* pSender)
{

// "close" menu item clicked
CCDirector::sharedDirector()->end();
}

void HelloWorld::menuPlayNewGame(CCObject* sender)
{

}

 

clip_image002

下一章節開始制作TMX游戲地圖,並加載到我們的新場景當中.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM