【Cocos2D-x 3.5實戰】坦克大戰(2)遊戲開始界面

 

關於遊戲的素材都是在網上處處蒐集到的,而後本身再用二流的ps技術修修改改的,因此有可能混在一塊兒有點不搭調(沒有辦法啊,沒有美工Orz。。app

項目已經創建好了,而後咱們須要把咱們下載的素材放到Resources文件夾。(遊戲完成之後,我會把素材包上傳的。。主要如今沒有找完)函數

 

設置屏幕大小:

 

在vs中打開建立的項目,打開AppDelagate.cpp文件動畫

在AppDelegate::applicationDidFinishLaunching()中添加代碼ui

if(!glview) { glview = GLViewImpl::create("Battle City"); //窗口標題 glview->setFrameSize(1280, 720); // 在這裏設置建立窗口的尺寸,手機上不用設置,由於手機有固定的屏幕 director->setOpenGLView(glview); }

 

在這個方法裏面有director->setAnimationInterval(1.0 / 60);這行代碼是做用是設置遊戲的幀數,是遊戲引擎調用OpenGL來繪製每一張圖須要用到的時間,其中參數的意思爲時間/畫面數。這裏咱們不作修改this

 

director->setDisplayStats(true);這一行代碼它的做用在你遊戲的左下角顯示一些遊戲的信息,好比說幀數,繪圖等等數據,通常在咱們調試的會將參數設置爲true,可是完成發佈以後通常設置爲falsespa

 

遊戲開始背景:

 

打開HelloWorldScene.cpp文件。調試

在init方法裏面咱們能夠看到code

// add "HelloWorld" splash screen" auto sprite = Sprite::create("HelloWorld.png"); // position the sprite on the center of the screen sprite->setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y)); 

 

這個就是建立背景,和設置背景位置座標的代碼了(Cocos2d座標系和OpenGL座標系同樣,原點爲屏幕左下角,x向右,y向上。)遊戲

這裏使用了精靈這一律念,下面是關於cocos2d的精靈的中文wiki圖片

Cocos2d中的精靈和其餘遊戲引擎中的精靈類似,它能夠移動,旋轉,縮放,執行動畫,並接受其餘轉換。Cocos2dx的Sprite由Texure,frame和animation組成,由openes負責渲染。主要的類關係以下: 簡單過程可描述爲:使用Texture2D加載圖片,能夠用Texture2D生成對應的SpriteFrame(精靈幀),將SpriteFrame添加到Animation生成動畫數據,用Animation生成Animate(就是最終的動畫動做),最後用Sprite執行這個動做。

 

 把原來的代碼刪除掉並添加

// 開始背景 auto startBackground = Sprite::create("ui/start_background.png"); // 設置精靈相對於屏幕的位置(絕對座標系) startBackground->setPosition(Vec2(visibleSize.width/2 + origin.x, 0)); // 設置錨點 startBackground->setAnchorPoint(Vec2(0.5, 0)); // 設置精靈的Tag,以後能夠經過標籤找到這個精靈,並對這個精靈進行操做 startBackground->setTag(START_BACKGROUD); // 將背景精靈添加到層中。其中第二個參數0是設置可見優先權,數值越小優先權越小,若是有其餘的精靈的優先權比他大時,他會被遮擋住 this->addChild(startBackground, 0); 

 

並在helloworldscene.h中添加const int START_BACKGROUD = 101;

 

添加遊戲菜單:

在HelloWorldScene.h中的helloworld類中聲明兩個公有回調方法,功能是點擊菜單時觸發。 

void menuCloseCallback(cocos2d::Ref* pSender); void menuStartCallback(cocos2d::Ref* pSender);

 

在HelloWorldScene.cpp中添加函數實現方法,close方法就用原來的 (具體功能暫時不寫)

// 開始遊戲,暫時不寫具體內容 void HelloWorld::menuStartCallback(Ref* pSender) { } 

 

如今能夠在init方法中添加菜單了

// 開始菜單, 第一二個參數分別是未點擊和點擊時顯示的圖片 auto startItem = MenuItemImage::create("ui/game_start.png", "ui/game_start.png", CC_CALLBACK_1(HelloWorld::menuStartCallback, this)); startItem->setPosition(Vec2(origin.x + visibleSize.width/4, origin.y + visibleSize.height/3 * 2)); auto closeItem = MenuItemImage::create("ui/game_exit.png", "ui/game_exit.png", CC_CALLBACK_1(HelloWorld::menuCloseCallback, this)); closeItem->setPosition(Vec2(origin.x + visibleSize.width/4, origin.y + visibleSize.height/3 * 2 - startItem->getContentSize().height - 20)); // 將菜單項添加到精靈裏面 auto menu = Menu::create(closeItem, startItem, NULL); // 將菜單加入當前層 menu->setPosition(Vec2::ZERO); this->addChild(menu, 1);

 

運行試一下

好了,遊戲的開始界面大體作好了。。如今看有點單調,之後再添加其餘功能吧。。

原文連接: http://www.bugcoding.com/entry/8

相關文章
相關標籤/搜索