cocos2d-x游戲設(shè)計(jì)實(shí)訓(xùn)指導(dǎo)書_第1頁
cocos2d-x游戲設(shè)計(jì)實(shí)訓(xùn)指導(dǎo)書_第2頁
cocos2d-x游戲設(shè)計(jì)實(shí)訓(xùn)指導(dǎo)書_第3頁
cocos2d-x游戲設(shè)計(jì)實(shí)訓(xùn)指導(dǎo)書_第4頁
cocos2d-x游戲設(shè)計(jì)實(shí)訓(xùn)指導(dǎo)書_第5頁
已閱讀5頁,還剩20頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、最新cocos2d-x游戲設(shè)計(jì)實(shí)訓(xùn)指導(dǎo)書廣州康大職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系?cocos2d-x游戲設(shè)計(jì)?實(shí)訓(xùn)指導(dǎo)書目 錄 TOC o 1-1 h z u HYPERLINK l _Toc270776102 緒 論 HYPERLINK l _Toc270776103 實(shí)訓(xùn)一 飛機(jī)大戰(zhàn)發(fā)環(huán)境、獲游戲開發(fā)資源 HYPERLINK l _Toc270776104 實(shí)訓(xùn)二 飛機(jī)大戰(zhàn)游戲的創(chuàng)立以及飛機(jī)和子彈的添加 HYPERLINK l _Toc270776105 實(shí)訓(xùn)三 飛機(jī)大戰(zhàn)中觸屏事件實(shí)現(xiàn) HYPERLINK l _Toc270776106 實(shí)訓(xùn)四 飛機(jī)大戰(zhàn)碰撞檢測 HYPERLINK l _Toc270

2、776107 實(shí)訓(xùn)五 飛機(jī)大戰(zhàn)背景音樂緒 論實(shí)訓(xùn)任務(wù)本課程是游戲軟件專業(yè)根底課程。其任務(wù)是讓學(xué)生學(xué)習(xí)cocos2d-x游戲引擎的使用,通過制作一個(gè)飛機(jī)大戰(zhàn)游戲,來熟悉游戲開發(fā)流程。以提出問題、思考問題、解決問題、發(fā)現(xiàn)新問題、思考新問題并解決新問題的方式來鍛煉學(xué)生的思維方式和編程思想。培養(yǎng)學(xué)生籌劃與實(shí)施工程的能力。培養(yǎng)學(xué)生交流與合作的能力實(shí)訓(xùn)目標(biāo)知識目標(biāo)1制作游戲背景;2制作飛機(jī)和子彈的精靈;3碰撞事件的處理4設(shè)計(jì)游戲的統(tǒng)計(jì)系統(tǒng);5設(shè)計(jì)特效和道具。職業(yè)目標(biāo)1培養(yǎng)學(xué)生謙虛、好學(xué)的品質(zhì);2培養(yǎng)學(xué)生勤于思考、做事認(rèn)真的良好作風(fēng); (3)培養(yǎng)學(xué)生良好的職業(yè)道德;4培養(yǎng)按時(shí)、守時(shí)的軟件交付觀念;5培養(yǎng)閱讀

3、設(shè)計(jì)文檔、編寫程序文檔的能力。技能目標(biāo)1培養(yǎng)學(xué)生良好的自我表現(xiàn)、與人溝通的能力;2培養(yǎng)學(xué)生的團(tuán)隊(duì)協(xié)作精神;3培養(yǎng)學(xué)生分析問題、解決問題的能力;4培養(yǎng)學(xué)生勇于創(chuàng)新、敬業(yè)樂業(yè)的工作作風(fēng);5培養(yǎng)學(xué)生的質(zhì)量意識、平安意識;6培養(yǎng)學(xué)生老實(shí)、守信、堅(jiān)忍不拔的性格;7培養(yǎng)學(xué)生自主、開放的學(xué)習(xí)能力。三、實(shí)訓(xùn)考核評定平時(shí)出勤20分,游戲演示40分,實(shí)訓(xùn)報(bào)告及源程序40分。 1“優(yōu)秀標(biāo)準(zhǔn):85-100分 2“良好標(biāo)準(zhǔn):70-84分3“及格標(biāo)準(zhǔn):60-70分 4“不及格標(biāo)準(zhǔn):0-59分實(shí)訓(xùn)一 一、實(shí)訓(xùn)目的與要求讓學(xué)生能夠自己在電腦上配置好我們實(shí)訓(xùn)所需要的開發(fā)環(huán)境,主要包括軟件的下載和安裝,環(huán)境的配置,求每個(gè)學(xué)生都能

4、夠獨(dú)立完成。并且老師在實(shí)訓(xùn)前把準(zhǔn)備好的實(shí)訓(xùn)資料,實(shí)訓(xùn)所需圖片都發(fā)給學(xué)生。二、實(shí)訓(xùn)環(huán)境一實(shí)訓(xùn)設(shè)備配置比擬高的電腦S2022二實(shí)訓(xùn)軟件1.vs20222.cocos2d-x 3.0版本3.cocos2d-ide 最新版本4.cygwin5 android ndk6.jdk,eclipse,android adt三實(shí)訓(xùn)場地實(shí)訓(xùn)樓3005實(shí)訓(xùn)準(zhǔn)備準(zhǔn)備好電腦下載好所需軟件下載并制作好所需圖片實(shí)訓(xùn)內(nèi)容及過程1.1.安裝VS2022這是微軟開發(fā)的集成開發(fā)環(huán)境,也是cocos2d-x的C+主戰(zhàn)場,1.2.安裝CygwinCygwin是windows平臺上運(yùn)行Linux的模擬環(huán)境,對于從Linux到Window

5、s的應(yīng)用程序移植,或者是使用GNU工具集在Windows上進(jìn)行嵌入式開發(fā)都非常有用。可以通過在線安裝,也可以離線進(jìn)行安裝,我們這里主要用來進(jìn)行cocos2d-x跨平臺安卓的交叉編譯。1.3.安裝JavaJava是Android支持的編程語言,也是安卓環(huán)境搭建的根底。主要麻煩的地方是環(huán)境變量的設(shè)置。1.4.安裝帶Android ADT的EclipseEclipse集成開發(fā)環(huán)境是用以android app,當(dāng)然也可以進(jìn)行C+的開發(fā),只要你安裝相應(yīng)的組件即可。安裝Android ADT就可以進(jìn)行Android app的開發(fā),這里選擇直接使用谷歌提供的打包好Android ADT的Eclipse,就免

6、去了ADT的安裝等操作。安裝完成后,通過SDK管理器下載相應(yīng)SDK版本就可以了。1.5.安裝Android NDKAndroid NDK是Android系統(tǒng)對外提供的基于C+接口的軟件工具包,它集成了交叉編譯器,只要修改相應(yīng)的編譯腳本文件就可以創(chuàng)立出so文件,且自動將其與Android app進(jìn)行打包。使用方式:進(jìn)入EclipseWindowsPreferencesAndroidNDK選擇所在的路徑。需注意的是,有些較高NDK版本在和cocos2d-x配合編譯的時(shí)候會出現(xiàn)問題。所以各個(gè)工具之間應(yīng)選擇可兼容的。1.6.安裝cocos2d-xcocos2d-x引擎這里就不再介紹了,國內(nèi)官網(wǎng)是 :/

7、cocos2d.cocoachina /。安裝方式:1點(diǎn)擊build-win32.bat,用來編譯cocos2d-x文件。2點(diǎn)擊install-templates-msvc.bat,用來安裝VS模版向?qū)А?create-android-project.bat,用來創(chuàng)立Andorid工程,在使用之前要先對其內(nèi)容進(jìn)行配置Cygwin路徑,Android SDK路徑,Android NDK路徑)五、實(shí)訓(xùn)總結(jié)局部游戲展示實(shí)訓(xùn)二一、實(shí)訓(xùn)目的與要求實(shí)現(xiàn)游戲工程的創(chuàng)立,并且能夠使用cocos2d-x游戲引擎的根本類和接口,完成導(dǎo)演、場景、圖層、精靈的實(shí)例化。要求學(xué)生能夠在老師的帶著下,完成根本的工程構(gòu)建,類

8、的使用。二、實(shí)訓(xùn)環(huán)境一實(shí)訓(xùn)設(shè)備配置比擬高的電腦S2022二實(shí)訓(xùn)軟件Vs2022三實(shí)訓(xùn)場地實(shí)訓(xùn)樓3005三、實(shí)訓(xùn)準(zhǔn)備1.準(zhǔn)備好效果圖四、實(shí)訓(xùn)內(nèi)容及過程1.創(chuàng)立飛機(jī)大戰(zhàn)工程工程,根本的類和方法的創(chuàng)立如下:1.創(chuàng)立GameScene類繼承于CCScene。2.創(chuàng)立GameLayer類繼承于CCLayer。3.為GameScene添加成員變量 GameLayer* _gameLayer。4.在GameScene的init里把_gameLayer add到場景中。2.添加飛機(jī)到場景中class PlaneLayer : public CCLayer public: PlaneLayer(void); P

9、laneLayer(void); static PlaneLayer* create();/實(shí)現(xiàn)create函數(shù) virtual bool init(); public: static PlaneLayer* sharedPlane;/提供sharedPlane全局指針 ; /PlaneLayer.cpp PlaneLayer* PlaneLayer:sharedPlane=NULL;/靜態(tài)變量要在cpp外初始化 PlaneLayer* PlaneLayer:create() PlaneLayer *pRet = new PlaneLayer(); if (pRet & pRet-init()

10、 pRet-autorelease(); sharedPlane=pRet;/獲得靜態(tài)指針sharedPlane的值 return pRet; else CC_SAFE_DELETE(pRet); return NULL; 3.添加敵機(jī)#include Enemy.h Enemy:Enemy(void) m_sprite=NULL;/m_sprite是CCSprite指針,用來綁定敵機(jī) m_life=0;/生命值 Enemy:Enemy(void) Enemy* Enemy:create() Enemy* pRet=new Enemy; pRet-autorelease(); return p

11、Ret; void Enemy:bindSprite(CCSprite* sprite,int life)/綁定敵機(jī),并傳入生命值 m_sprite=sprite; m_life=life; this-addChild(m_sprite); CCSprite* Enemy:getSprite() return m_sprite; int Enemy:getLife()/獲取生命 return m_life; void Enemy:loseLife()/生命值-1 m_life-; CCRect Enemy:getBoundingBox()/獲取敵機(jī)大小 CCRect rect=m_sprite

12、-boundingBox(); CCPoint pos=this-convertToWorldSpace(rect.origin); CCRect enemyRect(pos.x,pos.y,rect.size.width,rect.size.height); return enemyRect; 添加子彈子彈的初始位置在飛機(jī)的機(jī)頭位置,因?yàn)轱w機(jī)在游戲的過程中會隨著玩家的觸摸而改變其位置,所以,子彈的初始位置只能以當(dāng)前飛機(jī)位置為基準(zhǔn)進(jìn)行添加。CCPoint planePosition=PlaneLayer:sharedPlane-getChildByTag(AIRPLANE)-getPositi

13、on(); CCPoint bulletPosition=ccp(planePosition.x,planePosition.y+PlaneLayer:sharedPlane-getChildByTag(AIRPLANE)-getContentSize().height/2); bullet-setPosition(bulletPosition); 五、實(shí)訓(xùn)總結(jié)添加飛機(jī)和子彈后的效果圖實(shí)訓(xùn)三一、實(shí)訓(xùn)目的與要求完善對游戲引擎的知識的學(xué)習(xí),掌握游戲開發(fā)中必須要的知識點(diǎn),熟練使用游戲引擎開發(fā)游戲,到達(dá)高水平 游戲的開發(fā)效果,在實(shí)訓(xùn)中,掌握核心的游戲開發(fā)知識。要求學(xué)生能夠?qū)χ悄?的不同觸屏事件,進(jìn)行不

14、同的處理方法,能夠在游戲中靈活使用二、實(shí)訓(xùn)環(huán)境一實(shí)訓(xùn)設(shè)備配置比擬高的電腦S2022二實(shí)訓(xùn)軟件Vs2022三實(shí)訓(xùn)場地實(shí)訓(xùn)樓3005三實(shí)訓(xùn)準(zhǔn)備1.準(zhǔn)備好效果圖四實(shí)訓(xùn)內(nèi)容及過程1.觸屏方法 CCTargetedTouch它是從CCNode繼承來的,同時(shí)也繼承了3個(gè)硬件相關(guān)接口事件,分別是觸摸事件,加速器事件和鍵盤事件。所以我們可以直接在CCLayer中進(jìn)行觸摸事件的處理。觸摸事件中有兩個(gè)類,CCStandradTouch,CCTargetedTouch。前者為多點(diǎn)觸摸,后者為單點(diǎn)觸摸,而系統(tǒng)默認(rèn)注冊前者分發(fā)事件,我們這里要進(jìn)行繼續(xù)重載虛函數(shù)registerWithTouchSpatcher,對單點(diǎn)有

15、效。2.觸屏回調(diào)方法:virtual bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent);/觸摸開始調(diào)用 virtual void ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent);/觸摸移動調(diào)用 virtual void ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent);/觸摸結(jié)束調(diào)用 virtual void ccTouchCancelled(CCTouch *pTouch, CCEvent *pEvent);/一般是系統(tǒng)級調(diào)用,比方觸摸過程中來電之類

16、的3.實(shí)現(xiàn)暫停功能bool ControlLayer:init() bool bRet=false; do CC_BREAK_IF(!CCLayer:init(); CCSize winSize=CCDirector:sharedDirector()-getWinSize(); /參加PauseMenu CCSprite* normalPause=CCSprite:create(CCSpriteFrameCache:sharedSpriteFrameCache()-spriteFrameByName(game_pause_nor.png); CCSprite* pressedPause=CCS

17、prite:create(CCSpriteFrameCache:sharedSpriteFrameCache()-spriteFrameByName(game_pause_pressed.png); pPauseItem=CCMenuItemImage:create();/創(chuàng)立CCMenuItem pPauseItem-initWithNormalSprite(normalPause,pressedPause,NULL,this,menu_selector(ControlLayer:menuPauseCallback);/載入雙態(tài)圖和回調(diào)函數(shù) pPauseItem-setPosition(cc

18、p(normalPause-getContentSize().width/2+10,winSize.height-normalPause-getContentSize().height/2-10); CCMenu *menuPause=CCMenu:create(pPauseItem,NULL);/創(chuàng)立CCMenu,可以這么理解CCMenuItem是CCMenu的孩子 menuPause-setPosition(CCPointZero); this-addChild(menuPause,101); bRet=true; while (0); return bRet; /暫停按鍵的回調(diào)函數(shù) vo

19、id ControlLayer:menuPauseCallback(CCObject* pSender) if(!CCDirector:sharedDirector()-isPaused()/如果游戲處于正常狀態(tài) /更改為恢復(fù)按鈕的雙態(tài) pPauseItem-setNormalSpriteFrame(CCSpriteFrameCache:sharedSpriteFrameCache()-spriteFrameByName(game_resume_nor.png); pPauseItem-setSelectedSpriteFrame(CCSpriteFrameCache:sharedSprite

20、FrameCache()-spriteFrameByName(game_resume_pressed.png); CCDirector:sharedDirector()-pause();/暫停游戲,這是導(dǎo)演控制的 else/否那么 /更改為暫停按鈕的雙態(tài) pPauseItem-setNormalSpriteFrame(CCSpriteFrameCache:sharedSpriteFrameCache()-spriteFrameByName(game_pause_nor.png); pPauseItem-setSelectedSpriteFrame(CCSpriteFrameCache:shar

21、edSpriteFrameCache()-spriteFrameByName(game_pause_pressed.png); CCDirector:sharedDirector()-resume();/開麥拉! 五、實(shí)訓(xùn)總結(jié)實(shí)訓(xùn)四一、實(shí)訓(xùn)目的與要求在游戲過程中,碰撞是必然會發(fā)生的,也是游戲的一個(gè)特色,有碰撞才會有下一步的動作出現(xiàn),在此,我們對cocos2d-x中的碰撞進(jìn)行一個(gè)總結(jié),在這個(gè)實(shí)訓(xùn)中,要完成游戲中子彈和飛機(jī),以及飛機(jī)同飛機(jī)之間的碰撞。二、實(shí)訓(xùn)環(huán)境一實(shí)訓(xùn)設(shè)備配置比擬高的電腦S2022二實(shí)訓(xùn)軟件Vs2022三實(shí)訓(xùn)場地實(shí)訓(xùn)樓3005三實(shí)訓(xùn)準(zhǔn)備1.準(zhǔn)備好效果圖四實(shí)訓(xùn)內(nèi)容及過程1.實(shí)現(xiàn)游戲的

22、重載在GameLayer中對它進(jìn)行重載,把我們每幀內(nèi)要執(zhí)行的動作放到update中,進(jìn)行調(diào)用就可以了virtual CCObject:update(float dt);this-scheduleUpdate();2.碰撞檢測 CCArray* enemy3sToDelete=CCArray:create();/創(chuàng)立一個(gè)CCArray,用以存放待刪除的敵機(jī),也就是此子彈擊中的敵機(jī) enemy3sToDelete-retain();/調(diào)用retain CCARRAY_FOREACH(this-enemyLayer-m_pAllEnemy3,et)/遍歷所有敵機(jī) Enemy* enemy3=(Ene

23、my*)et; if (CCRect:CCRectIntersectsRect(bullet-boundingBox(),enemy3-getBoundingBox()/檢測碰撞,即矩形區(qū)域是否相交 /如果life1,移除bullet if (enemy3-getLife()1)/因?yàn)镋nemy3設(shè)置了生命值為5 enemy3-loseLife(); bulletsToDelete-addObject(bullet);/把待刪除子彈放入CCArray /如果life=1,移除enemy3 else if(enemy3-getLife()=1)/只剩一條命的時(shí)候,再碰撞就掛掉了 enemy3-l

24、oseLife(); bulletsToDelete-addObject(bullet);/把待刪除子彈放入CCArray enemy3sToDelete-addObject(enemy3);/把待刪除敵機(jī)放入CCArray score+=ENEMY3_SCORE; this-controlLayer-updateScore(score); /此時(shí)處在敵機(jī)爆炸動畫階段,敵機(jī)未消失,子彈還有打到的時(shí)機(jī),所以不進(jìn)行檢測 else ; CCARRAY_FOREACH(enemy3sToDelete,et)/遍歷所有此幀中碰撞死亡的敵機(jī),必須是死亡 Enemy* enemy3=(Enemy*)et;

25、this-enemyLayer-enemy3Blowup(enemy3);/執(zhí)行爆炸 enemy3sToDelete-release();/release CCARRAY_FOREACH(bulletsToDelete,bt)/遍歷所有此幀中碰撞的子彈 CCSprite* bullet=(CCSprite*)bt; this-bulletLayer-RemoveBullet(bullet);/執(zhí)行移除 bulletsToDelete-removeAllObjects(); bulletsToDelete-release();/release 五、實(shí)訓(xùn)總結(jié)實(shí)訓(xùn)五一、實(shí)訓(xùn)目的與要求在游戲場景中,增

26、加背景音樂,以及添加特殊的音效,讓游戲更有吸引力,也是游戲設(shè)計(jì)中的一個(gè)環(huán)節(jié),在這個(gè)當(dāng)中,我們需要對音樂的使用時(shí)機(jī)把握到位,以及音效的產(chǎn)生事件的處理。要求學(xué)生選擇合理的背景音樂,以及有效的特殊音效,也可以使用老師提供的音樂。二、實(shí)訓(xùn)環(huán)境一實(shí)訓(xùn)設(shè)備配置比擬高的電腦S2022二實(shí)訓(xùn)軟件Vs2022三實(shí)訓(xùn)場地實(shí)訓(xùn)樓3005三實(shí)訓(xùn)準(zhǔn)備1.準(zhǔn)備好音樂源文件四實(shí)訓(xùn)內(nèi)容及過程1.音樂的選擇:Android:在android上CocosDenshion能支持的音頻格式是對應(yīng)于android.media.MediaPlayer所支持的格式。 iOS:在IOS上面Cocos2d-x的CocosDenshion所支持的格式和Cocos2d-iphone中所支持的是一樣,mp3,caf是推薦的格式。 windows:.mid, .wav are supported. Note that mp3 is not supported. Marmalade:mp3 2.添加背景音樂:#include SimpleAudioEngine.h us

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論