【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