資源描述:
《游戲開發(fā)引擎—cocos引擎 《雷電大戰(zhàn)》開發(fā)教程》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、目錄第一節(jié):游戲開發(fā)引擎—Cocos2d-x3.4《雷電大戰(zhàn)》01:雙層地圖無限滾動(dòng)第二節(jié):游戲開發(fā)引擎Cocos2d-x3.4《雷電大戰(zhàn)》02:精靈隨手指移動(dòng),你點(diǎn)哪我走哪!第三節(jié):游戲開發(fā)引擎—Cocos2d-x3.4《雷電大戰(zhàn)》03:子彈無限發(fā)射第四節(jié):游戲開發(fā)引擎Cocos2d-x3.4《雷電大戰(zhàn)》04:策略模式實(shí)現(xiàn)不同子彈切換游戲開發(fā)引擎—Cocos2d-x3.4《雷電大戰(zhàn)》01:雙層地圖無限滾動(dòng)本文檢索關(guān)鍵詞:游戲引擎,游戲開發(fā)引擎,cocos引擎html5游戲開發(fā)本文要實(shí)現(xiàn)飛機(jī)射擊游戲中的地圖無限滾動(dòng)的功能,這里分為兩個(gè)層,一個(gè)層無限向下滾動(dòng),
2、一個(gè)層無限向上滾動(dòng),這樣子結(jié)合起來效果就非常有層次感,也非常逼真,這里我把地圖層都寫成一個(gè)類,自己把地圖改下,就可以成為你自己的了!下面,我們開始吧。先來看看效果:開發(fā)環(huán)境:Cocos2d-x3.4版本工程環(huán)境:VS30213一、游戲開發(fā)引擎—實(shí)現(xiàn)思路其實(shí)就是兩張圖片,然后同時(shí)一起向下(向上)滾動(dòng),當(dāng)一張圖片完全出視野后,就把它調(diào)到最上面。形成兩個(gè)圖片交替出現(xiàn),不過,一般為游戲中我們都感覺像是一張圖片,那是因?yàn)閮蓮垐D片的頭尾連接處是連起來的。原理我畫了些圖:二、游戲開發(fā)引擎—代碼1、無限向下滾動(dòng)BackLayerDown類頭文件:12345678910111
3、2#ifndef?__BackLayerDown_H__??#define?__BackLayerDown_H__??/**?*功能?實(shí)現(xiàn)無限地圖向下滾動(dòng)?*作者?林炳文?*時(shí)間?2015.2.27?*/??#include?"cocos2d.h"??#define?MAP_1_Tag???1???????//?宏定義兩個(gè)Map的Tag????#define?MAP_2_Tag???2???class?BackLayerDown?:?public?cocos2d::Layer??{??public:??????virtual?bool?init();????
4、??CREATE_FUNC(BackLayerDown);??private:??131415161718192021????void?update(float?time);??????virtual?void?onExit();??};?????#endif?//?__BackLayerDown_H__實(shí)現(xiàn)文件:12#include?"BackLayerDown.h"?????345678910111213141516USING_NS_CC;????????bool?BackLayerDown::init()??{???????????if?(?!Laye
5、r::init()?)??????{??????????return?false;??????}?????????????Size?visibleSize?=?Director::getInstance()->getVisibleSize();??????Point?origin?=?Director::getInstance()->getVisibleOrigin();?????????Sprite*?map1?=?Sprite::create("back3_1.png");??????Sprite*?map2?=?Sprite::create("back
6、3_2.png");??????map1->setPosition(Vec2(visibleSize.width?/?2?+?origin.x,?visibleSize.height?/?2?+?origin.y));??????map2->setPosition(Vec2(visibleSize.width?/?2?+?origin.x,?visibleSize.height?+?origin.y?+?map2->getContentSize().height?/?2));??????this->addChild(map1,?0,?MAP_1_Tag);?
7、?????this->addChild(map2,?0,?MAP_2_Tag);??1718192021222324252627????this->scheduleUpdate();????????????????return?true;??}?????//移動(dòng)并判斷背景??void?BackLayerDown::update(float?time)??{??????Size?visibleSize?=?Director::getInstance()->getVisibleSize();??????Point?origin?=?Director::getIn
8、stance()->getVisibleOrigin