【Cocos2D-x 3.5實戰】坦克大戰(2)遊戲開始介面,cocos2d-x3.5

來源:互聯網
上載者:User

【Cocos2D-x 3.5實戰】坦克大戰(2)遊戲開始介面,cocos2d-x3.5
 

關於遊戲的素材都是在網上到處搜集到的,然後自己再用二流的ps技術修修改改的,所以有可能混在一起有點不搭調(沒有辦法啊,沒有美工Orz。。

項目已經建立好了,然後我們需要把我們下載的素材放到Resources檔案夾。(遊戲完成以後,我會把素材包上傳的。。主要現在沒有找完)

 設定螢幕大小:

 

在vs中開啟建立的項目,開啟AppDelagate.cpp檔案

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

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

 

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

 

director->setDisplayStats(true);這一行代碼它的作用在你遊戲的左下角顯示一些遊戲的資訊,比如說幀數,繪圖等等資料,一般在我們調試的會將參數設定為true,但是完成發布之後一般設定為false

 

遊戲開始背景:

 

開啟HelloWorldScene.cpp檔案。

在init方法裡面我們可以看到

// add "HelloWorld" splash screen"auto sprite = Sprite::create("HelloWorld.png");// position the sprite on the center of the screensprite->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

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.