基于Cocos2D-X框架闖關(guān)游戲的設(shè)計(jì)_第1頁
基于Cocos2D-X框架闖關(guān)游戲的設(shè)計(jì)_第2頁
基于Cocos2D-X框架闖關(guān)游戲的設(shè)計(jì)_第3頁
基于Cocos2D-X框架闖關(guān)游戲的設(shè)計(jì)_第4頁
基于Cocos2D-X框架闖關(guān)游戲的設(shè)計(jì)_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、中國地質(zhì)大學(xué)(武漢)遠(yuǎn)程與繼續(xù)教育學(xué)院畢業(yè)設(shè)計(jì)(論文)3摘 要隨著智能設(shè)備平臺(tái)的普及、用戶數(shù)量的增多,智能平臺(tái)的應(yīng)用,尤其是游戲異?;鸨瑥闹参锎髴?zhàn)僵尸到憤怒的小鳥,移動(dòng)平臺(tái)游戲的開發(fā)進(jìn)入了新的階段。但是另一方面,平臺(tái)的多樣性也給開發(fā)者帶來諸多不便,怎樣將一款游戲發(fā)布到多個(gè)平臺(tái)也是開發(fā)者們一直在探索的問題。特別是隨著Android和iOS平臺(tái)的興起,開發(fā)者的游戲跨平臺(tái)的需求更強(qiáng)了,隨機(jī)Cocos2D-X分支誕生。其中“x”包含了兩個(gè)意思:一方面是C+的文件擴(kuò)展CXX,“x”表示該項(xiàng)目是由C+編寫的;另一方面意味著交叉,這個(gè)開源項(xiàng)目的目的是讓用戶創(chuàng)建跨平臺(tái)的代碼。Cocos2d-x使用C+重寫的

2、Cocos2D-x框架,因?yàn)锳ndroid和iOS均支持C+。因?yàn)镃ocos2d-x具有跨平臺(tái)的特點(diǎn),再加上Cocos2d全球社區(qū)的支持,Cocos2d框架簡單易學(xué)、十分容易快速上手,因?yàn)镃ocos2d-x迅速成為開發(fā)者的首選。經(jīng)過一段時(shí)間的發(fā)展,眾多開發(fā)者使用Cocos2d-x開發(fā)出了多款游戲,包括捕魚達(dá)人、地鐵總動(dòng)員等。關(guān)鍵字:智能設(shè)備、Cocos2D-X、游戲、Android; 目 錄一、緒論1(一)開發(fā)背景1(二)國內(nèi)外研究現(xiàn)狀1(三)游戲開發(fā)目的及意義2(四)本課題所研究的內(nèi)容3二、開發(fā)技術(shù)和相關(guān)理論介紹4(一)Cocos2D-X游戲引擎概述4(二)C+的特點(diǎn)5三、系統(tǒng)概要設(shè)計(jì)7(一

3、)設(shè)計(jì)思路與原理7(二)系統(tǒng)開發(fā)與選用7四、游戲詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)9(一)游戲主要設(shè)計(jì)9(二)游戲成果圖12五、研究目標(biāo)與主要特色14(一)研究目標(biāo)14(二)主要特色14結(jié)論16致謝17參考文獻(xiàn)18 19一、緒論手機(jī)游戲,在過去一段較長的時(shí)間里,基本都是基于J2ME(Java 2 Micro Edition),但是由于Java是一種編譯成字節(jié)碼后在解釋執(zhí)行的語言,所以在效率上遠(yuǎn)遠(yuǎn)比不上c/c+,而游戲卻十分講究效率,因?yàn)橐坏┬实拖?,?huì)直接影響玩家對游戲的體驗(yàn),即便游戲做得再好再漂亮,沒有一個(gè)良好的體驗(yàn),也不能為玩家所接受。隨著科技的發(fā)展,特別是近幾年智能手機(jī)系統(tǒng)的興起,J2ME逐漸退出舞臺(tái)。取而

4、代之的是針對各自主流游戲手機(jī)系統(tǒng)的語言的興起,例如IOS的Object-C,Android和Java和Windows Phone的C#,即使后者也是運(yùn)行在虛擬機(jī)上的,但是廠商已經(jīng)針對自身平臺(tái)對它們做了特殊優(yōu)化,所以效率上也遠(yuǎn)遠(yuǎn)超過J2ME,但是手機(jī)系統(tǒng)平臺(tái)多的今天,如果每一個(gè)游戲都用多種語言復(fù)習(xí),這種時(shí)間和資源的代價(jià)是很高的。于是,c/c+的高效率和跨平臺(tái)能力有一次等到體現(xiàn)。(一)開發(fā)背景Cocos2D-X游戲引擎是一個(gè)支持多平臺(tái)的2D手機(jī)游戲引擎,使用C+開發(fā),基于Opengl ES,基于Cocos2D-iPhone,支持WoPhone,IOS4.1,Android2.1及更高版本,Wind

5、ows XP&Windows 7,Windows Phone 8。Cocos2d-x是一個(gè)開源的移動(dòng)2D游戲框架,MIT許可證下發(fā)布的。這是一個(gè)C+ Cocos2d-iPhone項(xiàng)目的版本。Cocos2d-X發(fā)展的重點(diǎn)是圍繞Cocos2d跨平臺(tái),Cocos2d-x提供的框架。手機(jī)游戲,可以寫在C+或者Lua中,使用API是Cocos2d-iPhone完全兼容。Cocos2d-x項(xiàng)目可以很容易地建立和運(yùn)行在iOS,Android,黑莓Blackberry等操作系統(tǒng)中。Cocos2d-x還支持Windows、Mac和Linux等桌面操作系統(tǒng),因此,開發(fā)者編寫的源代碼很容易在桌面操

6、作系統(tǒng)中編輯和調(diào)試。(二)國內(nèi)外研究現(xiàn)狀我們的國內(nèi)現(xiàn)狀還是沒有比國外有過大的差距的。我曾經(jīng)玩過數(shù)字巧克力的一款蓋樓的游戲,扎眼一看只是一個(gè)搭積木的游戲,但卻能讓你一連玩幾個(gè)小時(shí)游戲,變化無窮,游戲的設(shè)計(jì)者花了多少心思在其中可見一斑。而國內(nèi)我也遇到過類似的例子。如上海幽幽推出的一款名為八卦西游勇闖盤絲洞的游戲,其實(shí)這就是一款簡單的走迷宮游戲,但是與西游題材相結(jié)合后加上搞笑的對白與畫面效果是整體游戲便有了一個(gè)升華。同樣是讓人沉迷其中。但是我還是想說一句,很多這樣的游戲并沒有變成產(chǎn)品,變成產(chǎn)品的那些一半以上沒有上線,上線的那些一半因?yàn)橹谱髦械哪承┉h(huán)節(jié),也已經(jīng)面目全非,最初的那點(diǎn)創(chuàng)意根本沒有體現(xiàn)出來。

7、所以我覺得我們國內(nèi)根本不缺好的創(chuàng)意,只是種種的原因?qū)е逻@些創(chuàng)意沒有很好的體現(xiàn)出來。所以那“種種原因”才是我們需要關(guān)心的。在智能手機(jī)上的游戲,無論是技術(shù)還是創(chuàng)意,國內(nèi)可以說是完全跟著國外走。首先,在技術(shù)上,Cocos2D-X雖然是國人在維護(hù),但追溯到Cocos2D-X起源,2008年出生與阿根廷的Ricardo Quaesada用Python開發(fā)出Cocos2D,2010年Cocos2D的團(tuán)隊(duì)吧Cocos2D移植到IOS平臺(tái),命名為Cocos2D-iPhone,2011年,由國人領(lǐng)導(dǎo)的團(tuán)隊(duì)吧Cocos2D-iPhone用c+翻譯,Cocos2D-X誕生,往后的一兩年里,Cocos2D的其他分支陸

8、續(xù)誕生,而Cocos2D-X因?yàn)閺?qiáng)大的移植性得到廣泛使用,現(xiàn)在無論在App Store還是Android的各個(gè)商城上,用Cocos2D-X開發(fā)的游戲也數(shù)不勝數(shù)。其次,在游戲創(chuàng)意上,物理游戲大多是偏向于益智類,如有名的憤怒的小鳥和撲魚達(dá)人等等,物理游戲最大的特點(diǎn)是游戲世界與現(xiàn)實(shí)世界相近,能使玩家更容易思考和了解生活中的物理現(xiàn)象,具有很好的教育性和趣味性。(三)游戲開發(fā)目的及意義在市場定位的過程中,游戲產(chǎn)品屬于文化范疇,對于游戲玩家來說,其實(shí)所以會(huì)選擇自己喜歡的游戲,就是因?yàn)橄胍趭蕵飞系玫揭粋€(gè)滿足。而相應(yīng)的對于游戲開發(fā)商來說,我們就應(yīng)該迎合這樣的一個(gè)需求,滿足市場上的消費(fèi)者的需求,就是要在開發(fā)游

9、戲的過程中,找到游戲玩家真正需要的,找準(zhǔn)明確的市場定位,將游戲的開發(fā)和后期的服務(wù)升級(jí)等,都以消費(fèi)者為最終的出發(fā)點(diǎn)。物理游戲有很多其他游戲不可比擬的優(yōu)勢。首先,它設(shè)定的世界和現(xiàn)實(shí)世界很接近,其實(shí)世界存在的很多屬性,在游戲世界里都能一一重現(xiàn),對幼齡玩家了解生活、了解物理很有幫助;其次,物理游戲里可以實(shí)現(xiàn)很多生活中難以接觸,甚至是不存在的物體,這樣可以使玩家的想象力和邏輯能力得到很好的鍛煉。綜上所述,物理游戲有著很好的教育意義。往日,一提及游戲,家長總會(huì)想到“沉迷”、“段落”這些貶義詞與,而娛樂有時(shí)生活中必不可少的東西,物理游戲正正可以成為游戲正名,它是娛樂,但是它又把教育和游戲相結(jié)合,可以在游戲過

10、程中潛移默化的影響玩家,引起玩家的思考,激發(fā)起玩家學(xué)習(xí)的主觀能動(dòng)性。(四)本課題所研究的內(nèi)容本課題主要研究基于cocos2d-x開源游戲引擎,在window7操作系統(tǒng)平臺(tái)下,使用Microsoft Visual Studio 2010開發(fā)工具進(jìn)行開發(fā)。在技術(shù)實(shí)現(xiàn)上,采用基于C+相結(jié)合,以實(shí)現(xiàn)基本的游戲邏輯流程,保證系統(tǒng)的高性能,提高本游戲的可維護(hù)性和可移植性。在整個(gè)游戲開發(fā)中,首先對游戲的設(shè)計(jì)和需求進(jìn)行了詳細(xì)的考究,查閱大量的相關(guān)資料以及翻閱老師所提供的游戲資料,并且借鑒了一些其他物理游戲的開發(fā)經(jīng)驗(yàn)及老師的專業(yè)指導(dǎo),最后提出設(shè)計(jì)方案。二、開發(fā)技術(shù)和相關(guān)理論介紹(一)Cocos2D-X游戲引擎概

11、述1、Cocos2D-X的特點(diǎn)其除跨平臺(tái)外,相對其他的移動(dòng)游戲引擎還有以下特點(diǎn):(1)易用性:易于學(xué)習(xí)掌握的API,大量實(shí)例代碼和文檔,有C+語言功底的新手只需花一個(gè)月就能上手完成簡單游戲;(2)高效性:使用OpenGL ES1.1最佳方式進(jìn)行渲染;(3)靈活性:易于擴(kuò)展,易于與其他開源庫集成使用;(4)活躍的社區(qū):全球化的活躍論壇;(5)成功商用:根據(jù)開源社區(qū)的保守統(tǒng)計(jì),基于Cocos2d-x開發(fā)的游戲全球范圍內(nèi)已經(jīng)突破一億安裝量。2、Cocos2D-X的功能(1)非常容易的進(jìn)行不同場景之間的流程控制管理;(2)菜單維護(hù)簡;(3)支持標(biāo)簽和html標(biāo)簽的文本渲染;(4)快速而方便的精靈;(5

12、)按照你的想法只會(huì)精靈變化,可組合的動(dòng)作,包括移動(dòng)、旋轉(zhuǎn)和縮放;(6)支持包括波浪、旋轉(zhuǎn)和透鏡等特效;(7)支持矩形和六邊形的瓦片地圖(Tiled Maps);(8)支持場景切換特效;(9)支持粒子系統(tǒng);(10)支持硬件加速,即基于opengl es1.1實(shí)現(xiàn)圖形渲染系統(tǒng);根據(jù)不同屏幕分辯率自動(dòng)縮放適配; 關(guān)于Cocos2D-X中的“X”,“X”有兩個(gè)意思,一個(gè)是表示“C+”,因?yàn)橛袝r(shí)候,C+文件的后綴名可以用cxx代替,因此X便表示該開源項(xiàng)目使用C+編寫,并且提供C+的API,二是表示“Cross”該開源項(xiàng)目的目標(biāo)是跨更多平臺(tái)。目前支持的平臺(tái)是在iPhone,Andorid的,WoPhone

13、,Win32平臺(tái)上,但可根據(jù)要求提供更多的平臺(tái)。Cocos2D-x繼承了Cocos2D的全部特點(diǎn),包括如下內(nèi)容:(1)流程控制:非常容易地管理不同場景之間的流程控制。(2)精靈:快速而方便的精靈。(3)動(dòng)作:可組合精靈的動(dòng)作(如移動(dòng)、旋轉(zhuǎn)和縮放等),使精靈動(dòng)起來。(4)特效:包括波浪、旋轉(zhuǎn)和透鏡等特性。(5)平面地圖:支持平面地圖和45度角地圖。(6)轉(zhuǎn)換:從一個(gè)場景移動(dòng)到另外一個(gè)不同的場景。(7)菜單:創(chuàng)建內(nèi)部菜單,包括主菜單和游戲菜單。(8)文本渲染:支持文本渲染標(biāo)簽。(9)文檔:包括編程指南、API參考、視頻教學(xué)和很多簡單的測試?yán)印?、Cocos2D-X的應(yīng)用由于跨平臺(tái)的特性,Coco

14、s2D-x得到了諸多開發(fā)者的喜愛。截至2012年4月月底,使用Cocos2D-x開發(fā)的游戲有200多個(gè),同時(shí)有很多用Cocos2D-iPhone開發(fā)的游戲的移植版本。開發(fā)者也嘗試著使用Cocos2D-x實(shí)現(xiàn)很多不同游戲中的效果。CocoaChina論壇舉辦的特效大賽中,很多特效都基于Cocos2D-x游戲引擎開發(fā)。從顯示水波紋效果到塔防游戲例子,從切繩子特效到“憤怒小鳥”太空版效果模擬,Cocos2D-x的“江湖霸主”地位初步顯現(xiàn)。(二)C+的特點(diǎn)C+的主要特點(diǎn)有兩個(gè)方面:全面支持C語言和面向?qū)ο?;C+從C語言發(fā)展而來,保持了C語言的簡介、高效和在某些操作上沿用了匯編語言指令的特點(diǎn)。同時(shí),對C

15、語言的類型進(jìn)行了系統(tǒng)的改革和擴(kuò)充,堵塞了C語言中的許多漏洞,C+便已提供了更好的類型檢查和編譯時(shí)的分析,能檢查出更多的類型錯(cuò)誤。C+改善了C語言的安全性,比C+語言更安全。由于C+保持與C語言兼容,這就是許多代碼并不經(jīng)修改就可以在C+編譯器下通過,用C語言編寫的眾多庫函數(shù)和實(shí)用軟件可方便地移植到C+中。因此,使用C語言的程序員能很快學(xué)會(huì)C+,使用C+進(jìn)行編程。另外,用C+編寫的程序可讀性號(hào),代碼結(jié)構(gòu)更為合理。C+的最重要的特點(diǎn)是支持面向?qū)ο蟮某绦蛟O(shè)計(jì),使用C+編程,編程效率高;由于面向?qū)ο蟾咏祟愓J(rèn)識(shí)世界的方法,C+對于問題更容易描述,程序更容易理解和維護(hù),C+的模板對庫代碼的重用提供了支持

16、;C+更有利于大型程序設(shè)計(jì)。C+是一種支持多種程序設(shè)計(jì)方法的語言,提供對過程化和基于對象的程序設(shè)計(jì)方法的支持。使用于不用使用開發(fā)方法的編程人員。C+是一種可以撰寫跨平臺(tái)應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,C+技術(shù)具有卓越的通用性、高效性、平臺(tái)移植性和安全性,廣泛應(yīng)用于個(gè)人PC、數(shù)據(jù)中心、游戲控制臺(tái)、科學(xué)超級(jí)計(jì)算機(jī)、移動(dòng)電話和互聯(lián)網(wǎng)。游戲的設(shè)計(jì)思路有以下幾點(diǎn):(1)游戲分為幾個(gè)相對獨(dú)立的模板,但這些模板都進(jìn)行集中式管理。(2)分層的模板化程序設(shè)計(jì)思路,整個(gè)游戲采用模板化結(jié)構(gòu)設(shè)計(jì)。作為應(yīng)用程序有較強(qiáng)的靠操作性和擴(kuò)展性。(3)合理的數(shù)據(jù)流設(shè)計(jì),在應(yīng)用游戲設(shè)計(jì)中,相對獨(dú)立的模板間以數(shù)據(jù)流相互連接,使各模

17、板間的耦合性較低,方便游戲運(yùn)行,提高游戲健壯性。三、系統(tǒng)概要設(shè)計(jì)(一)設(shè)計(jì)思路與原理1、設(shè)計(jì)思路(1)游戲分為幾個(gè)相對獨(dú)立的模板,但這些模板都進(jìn)行集中式管理。 (2)分層的模板化程序設(shè)計(jì)思路,整個(gè)游戲采用模板化結(jié)構(gòu)設(shè)計(jì)。作為應(yīng)用程序有較強(qiáng)的靠操作性和擴(kuò)展性。(3)合理的數(shù)據(jù)流設(shè)計(jì),在應(yīng)用游戲設(shè)計(jì)中,相對獨(dú)立的模板間以數(shù)據(jù)流相互連接,使各模板間的耦合性較低,方便游戲運(yùn)行,提高游戲健壯性。1、設(shè)計(jì)原理為了是本游戲趣味性豐富,操作簡單,最大限度的提高游戲的質(zhì)量,從而讓用戶的體驗(yàn)到游戲的樂趣,在設(shè)計(jì)開發(fā)過程中遵循了如下原則:(1)合法性原則:游戲道具和物體不會(huì)出現(xiàn)非物理現(xiàn)象。(2)準(zhǔn)確性原則:擺放道具

18、位置相同時(shí),不會(huì)出現(xiàn)多重結(jié)果。(3)趣味性原則:完全按照策劃來實(shí)現(xiàn)道具的功能和效果。(4)易操作原則:要求設(shè)計(jì)的游戲界面友好,操作方便,必要的地方進(jìn)行提示。(5)可讀性原則;為了便于其他設(shè)計(jì),維護(hù)人員讀懂代碼或以后的代碼修改,游戲升級(jí)維護(hù),即盡可能地做好做好代碼注釋工作。(6)優(yōu)化性原則:為了達(dá)到優(yōu)化的目的,采用面向?qū)ο蟮脑O(shè)計(jì)模式,是程序簡單明了,也方便將來的維護(hù)。(二)系統(tǒng)開發(fā)與選用1、操作系統(tǒng)的選用操作系統(tǒng)采用微軟的桌面操作系統(tǒng)Windows7。Windows7是微軟繼windowsXP后又一劃時(shí)代的系統(tǒng)版本,無論在性能上還是在用戶體驗(yàn)上都有相當(dāng)強(qiáng)大的優(yōu)勢。C+是一種可以撰寫跨平臺(tái)應(yīng)用軟件

19、的面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,C+技術(shù)具有卓越的通用性、高效性、平臺(tái)移植性和安全性,廣泛應(yīng)用于個(gè)人PC、數(shù)據(jù)中心、游戲控制臺(tái)、科學(xué)超級(jí)計(jì)算機(jī)、移動(dòng)電話和互聯(lián)網(wǎng)。2、開發(fā)工具的使用(1)Microsoft Visual Studio 2010:用于游戲整體框架搭建和代碼編寫。(2)Microsoft Visual C+ 6.0:用于游戲整體框架搭建和代碼編寫。(3)Photoshop:用于對系統(tǒng)上的一些圖片進(jìn)行美工和制作。(4)Microsoft Office Word 2007:用于對論文的編寫和資料的收集保存。四、游戲詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)(一)游戲主要設(shè)計(jì)游戲界面的設(shè)計(jì),包含了游戲的開始和游戲的退出:

20、CCLayerColor:initWithColor(ccc4(0, 255, 255, 50); /背景的顏色CCSprite *pSprite = CCSprite:create("bj.png"); /背景圖片pSprite->setAnchorPoint(ccp(0,0); /設(shè)置背景的位置pSprite->setPosition(ccp(0,0); /設(shè)置背景的位置addChild(pSprite);然后添加玩家,讓玩家位于左邊屏幕中間,CC_BREAK_IF(! CCLayerColor:initWithColor(ccc4(255,

21、60;255, 255, 255);/從CCLayerColor繼承后,必須對它用initWithColor進(jìn)行初始化CCSize winSize = CCDirector:sharedDirector()->getWinSize();/邏輯尺寸而不是像素CCSprite *player = CCSprite:create("player.png", CCRectMake(0, 0, 27, 40);player->setPosition(cc

22、p(player->getContentSize().width / 2, winSize.height / 2);  this->addChild(player);  bRet = true;     while (0);注:getContentSize()返回的就是這個(gè)矩形的大小,只是是邏輯尺寸, 而不是像素的,例如:一個(gè)sprite都被看成是一個(gè)矩形,具有長和寬,單位是point。接下來添加怪物,并

23、且讓怪物可以移動(dòng),我們在屏幕右邊創(chuàng)建怪物,建立動(dòng)作讓它們向左移動(dòng),思路就是隨機(jī)產(chǎn)生怪物,這個(gè)怪物并且能自動(dòng)隨機(jī)移動(dòng)。產(chǎn)生的怪物剛好是在手機(jī)屏幕的右邊產(chǎn)生,所以怪物x的坐標(biāo)就是屏幕的寬度,再加上怪物身體的一半。monster->setPosition(ccp(winSize.width + monster->getContentSize().width / 2, actualY);要讓怪物隨機(jī)的產(chǎn)生,只能在Y軸上做文章,所以只需要讓actualY隨機(jī)就行。 CCSprite *monster = 

24、;CCSprite:create("monster.png");CCSize winSize = CCDirector:sharedDirector()->getWinSize();int minY = monster->getContentSize().height / 2;/最小的Y。int maxY = winSize.height - monster->getContentSize().height /

25、0;2;/最大的Yint rangeY = maxY - minY;/怪物產(chǎn)生的有效范圍int actualY = (rand() % rangeY) + minY;/rand()%rangeY/的意思就是值為rangeY-1,在有效范圍內(nèi)加上最小值,也出不了那個(gè)范圍/起始點(diǎn)在屏幕之外monster->setPosition(ccp(winSize.width + monster->getContentSize().width /&#

26、160;2, actualY);this->addChild(monster);/顯示怪物int minDuration = 2.0;/最小時(shí)間int maxDuration = 4.0;/最大時(shí)間    int rangeDuration = maxDuration - minDuration;/時(shí)間范圍int actualDuration = (rand() % rangeDu

27、ration) + minDuration;/時(shí)間范圍-1再加最小時(shí)間CCMoveTo *actionMove = CCMoveTo:create(actualDuration, ccp(-monster->getContentSize().width / 2, actualY);/多少時(shí)間移動(dòng)到哪里,這是一個(gè)動(dòng)作,/monster的前面是一個(gè)負(fù)號(hào)表示方向相反CCCallFuncN *actionMoveDone = CCCallFuncN:create(this,&#

28、160;callfuncN_selector(HelloWorld:spriteMoveFinished);/CcallFuncN說明spriteMoveFinished這個(gè)函數(shù)的參數(shù)將是一個(gè)節(jié)點(diǎn),因?yàn)楣?jié)點(diǎn)是管顯示的,當(dāng)精靈從左移到右的時(shí)候,我們需要它從屏幕上消失,即刪除這個(gè)節(jié)點(diǎn)。 monster->runAction(CCSequence:create(actionMove, actionMoveDone, NULL);/CCSequence是一個(gè)動(dòng)作組合,將一個(gè)幾秒鐘移動(dòng)結(jié)束的動(dòng)作和一個(gè)想事動(dòng)作組合在一起,就形成了移動(dòng)結(jié)束后調(diào)用什么函數(shù)的功能。接下去就是

29、定時(shí)創(chuàng)建怪物,在init函數(shù)返回之前,安裝定時(shí)器,每秒執(zhí)行一次,代碼如下:his->schedule(schedule_selector(HelloWorld:gameLogic), 1.0);不直接調(diào)用addMonster函數(shù),而是調(diào)用gameLogic函數(shù),因?yàn)楹竺娴?.0參數(shù),要傳遞給gameLogic函數(shù)的dt參數(shù)。接著讓玩家可以射擊子彈,當(dāng)用戶在屏幕點(diǎn)擊時(shí),就讓玩家往點(diǎn)擊的方向進(jìn)行發(fā)送子彈,用戶的屏幕點(diǎn)擊點(diǎn)并不是子彈移動(dòng)的最終地:接下來,就是讓炮塔可以旋轉(zhuǎn)射擊。_player = CCSprite:create("player2.png&

30、quot;);/炮塔精靈_player->setPosition(ccp(_player->getContentSize().width / 2, winSize.height / 2);/炮塔的顯示位置this->addChild(_player); /顯示炮塔計(jì)算出炮塔的旋轉(zhuǎn)角度:運(yùn)用數(shù)學(xué)知識(shí),tan(angle) = 對邊 / 鄰邊,利用反正切angle = arctan(對邊 / 鄰邊),這時(shí)計(jì)算出的是弧度,用CC_RADIANS_TO_DEGREES宏轉(zhuǎn)換成角度。另外在數(shù)學(xué)中,逆時(shí)針為正,在Cocos2D-

31、x中,順時(shí)針為正,就如下圖所示: 要讓層可以支持觸摸,需要在init方法,添加如下代碼:this->setTouchEnabled(true);/這個(gè)函數(shù)是CCLayer類開啟觸屏響應(yīng)功能的開關(guān)。只是管子彈的飛行方向和速度。具體的說就是向觸摸點(diǎn)發(fā)射出去,最終消失的位置。在這里是不管消不消滅敵人的。消滅怪物的事,由幀去負(fù)責(zé)。幀里把這個(gè)子彈和怪獸清除了,就不會(huì)再在屏幕上出現(xiàn)了。當(dāng)子彈碰到怪物時(shí),怪物被消滅,子彈消失,即碰撞檢測。需要在場景中跟蹤目標(biāo)和子彈。需要將最后計(jì)算出的角度乘以-1。float angleRadians = atanf(float)offRe

32、alY / (float)offRealX);/ataf(對邊/鄰邊)是弧度float angleDegrees = CC_RADIANS_TO_DEGREES(angleRadians);/弧度轉(zhuǎn)為角度float cocosAngle = -1 * angleDegrees;/逆時(shí)針轉(zhuǎn)為順時(shí)針方向_player->setRotation(cocosAngle);/將炮塔的方向設(shè)置成觸摸的方向旋轉(zhuǎn)再射擊。炮塔的旋轉(zhuǎn)是瞬間完成的,這不符合現(xiàn)實(shí),需要讓它有個(gè)動(dòng)作移動(dòng)炮塔的方向。然后就需要下面這

33、個(gè)代碼:cocos2d:CCSprite *_nextProjectile;/子彈,這個(gè)變量的設(shè)定只是起到一個(gè)中間作用。意思是,用它生成一顆子彈,然后將這顆子彈加入到子彈數(shù)組中。(二)游戲成果圖五、研究目標(biāo)與主要特色(一)研究目標(biāo)游戲給人們緊張的生活帶來了無限的樂趣,是人們生活的調(diào)味劑,總所周知,移動(dòng)互聯(lián)網(wǎng)是未來生活的主旋律,因此兩者的結(jié)合,手機(jī)游戲?qū)⒂瓉韽V闊的市場,在此情況下研究手機(jī)游戲運(yùn)營商如何獲利具有非常重要的價(jià)值。通過自己所學(xué)的知識(shí)基本完成系統(tǒng)的功能實(shí)現(xiàn),在完成系統(tǒng)的過程中對使用cocos2d-x的了解。(二)主要特色Cocos2D-X是一個(gè)開源的移動(dòng)2D游戲框架,MIT許可

34、證下發(fā)布的。這是一個(gè)C+Cocos2D-X-iPhone項(xiàng)目的版本。Cocos2D-X發(fā)展的重點(diǎn)是圍繞Cocos2D跨平臺(tái)。即其實(shí)現(xiàn)一次編碼,在各平臺(tái)分別編譯后即可運(yùn)行,不需為跨平臺(tái)修改大量代碼,不需要在這一方面花費(fèi)很多時(shí)間和人力。隨著智能設(shè)備平臺(tái)的普及、用戶數(shù)量的增多,智能平臺(tái)的應(yīng)用,尤其是游戲異?;鸨?,從植物大戰(zhàn)僵尸到憤怒的小鳥,移動(dòng)平臺(tái)游戲的開發(fā)進(jìn)入了新的階段。但是另一方面,平臺(tái)的多樣性也給開發(fā)者帶來諸多不便,怎樣將一款游戲發(fā)布到多個(gè)平臺(tái)也是開發(fā)者們一直在探索的問題。特別是隨著Android和iOS平臺(tái)的興起,開發(fā)者的游戲跨平臺(tái)的需求更強(qiáng)了,隨機(jī)Cocos2D-X分支誕生。其中“x”包含了兩個(gè)意思:一方面是C+的文件擴(kuò)展CXX,“x”表示該項(xiàng)目是由C+編寫的;另一方面意味著交叉,這個(gè)開源項(xiàng)目的目的是讓用戶創(chuàng)建跨平臺(tái)的代碼。Cocos2d-x使用C+

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論