在本文中,你將編寫專屬於你的第一個完整的遊戲。它不會爲你贏得什麼獎項,但從中能夠學到cocos2d基本要素的使用方法。我會逐步進行介紹,你還能學到一些Xcode的使用方法。 node
這個遊戲是著名的「Doodle Jump」遊戲的「倒版」,它被貼切地命名爲「DoodleDrop」。玩家經過旋轉屏幕儘量躲避落下的障礙物。遊戲的最終版本如圖4-1所示,你能夠在此提早了解一下將在本章創造的做品。 程序員
圖 4-1 「DoodleDrop」遊戲的最終版本
安全
4.1 循序漸進地建立項目 app
如今就打開Xcode,我將逐步引導你建立你的第一個cocos2d遊戲。在Xcode中,選擇File | New Project…,而後選擇cocos2d Application模板,如圖4-2所示。Xcode會要求你爲新項目輸入一個名稱,這裏輸入DoodleDrop。若是須要,請把它存儲到一個合適的位置。因爲Xcode會自動建立一個名爲DoodleDrop的子文件夾,所以沒必要畫蛇添足。 this
圖 4-2 經過cocos2d Application模板建立項目 spa
此時Xcode的項目視圖應如圖4-3所示。取決於你所用的cocos2d和Xcode版本,可能還會有更多的文件,或者組的名字可能會有區別。 我已展開Classes和Resources組,它們分別用來添加源代碼和遊戲資源文件。任何非源代碼文件都被當作資源,不管是圖像文件、聲音文件、文本文件仍是plist文件。分組並非必需的,但若是堅持對同類文件進行分組,那麼這將爲理清項目帶來很大便利。 .net
圖4-3 開始建立遊戲!當前的DoodleDrop項目基於cocos2d的HelloWorld項目模板。確保將相應的後續文件添加到了Classes和Resources組中,以保持遊戲項目的井井有理 設計
接下來要面臨一個抉擇:是先從已經建立好的HelloWorldScene(沒準在後面會重命名它)開始工做呢,仍是要經過額外的步驟建立你本身的場景並替代HelloWorldScene呢?我選擇後者,由於最終你仍是得加上新的場景,不如藉着這個過程摸清門路。 請確認Classes組已被選中,而後選擇菜單File | New File…,或者右擊Classes文件夾,從彈出菜單中選擇Add | New File…,打開New File對話框,如圖4-4所示。因爲cocos2d爲最重要的節點提供了類模板,不加以利用不免惋惜。在cocos2d的User Templates中,選擇CCNode class並單擊Next,確認它已設置成CCLayer的子類。而後再次單擊Next,這會打開如圖4-5所示的保存文件對話框。 日誌
圖4-4 添加新的CCNode派生類的最好作法就是利用cocos2d提供的類模板。 在此創建新場景時,咱們讓CCNode類做爲CCLayer的子類 code
圖4-4 添加新的CCNode派生類的最好作法就是利用cocos2d提供的類模板。 在此創建新場景時,咱們讓CCNode類做爲CCLayer的子類圖4-5 命名新場景並確認已將其添加到合適的Target中
我更傾向以一般的方式,按類的功能來命名類。這裏咱們使用GameScene.m。DoodleDrop的遊戲進程將在這個場景中展開,因此這個名字聽上去還算合適。記住必定要選中DoodleDrop複選框。若是使用的是Xcode 3,還必須選中Also create「GameScene.h」(同時建立「GameScene.h」)複選框。Targets用於指定Xcode中建立不一樣版本可執行文件的方式。例如,遊戲的iPad版本一般建立爲單獨的Target。在此狀況下,咱們只有一個Target,然而一旦建立好iPad的一個Target,就要確保某些狀況不會發生,好比iPad的高分辨率圖像不會意外加入到iPhone或iPod Touch Target中。
注意: 不檢查Add to targets複選框組會致使各類各樣的問題,從編譯錯誤到「文件未找到」錯誤,或是由於文件沒有被添加到須要該文件的Target而致使的遊戲程序崩潰。抑或是文件添加到根本不須要此文件的Target而形成空間浪費,例如在普通的iPhone或iPod Touch中加入iPad和iPhone 4的高分辨率圖像。
此時此刻,咱們的GameScene類仍是一片空白。咱們要作的第一件事就是爲它添加「+(id) scene」方法,從而將它設置爲場景。這裏添加的代碼與第3章中講過的沒有本質差異,只是層的類名更改了一下。任何類中幾乎都須要「– (id) init」和「– (void) dealloc」方法,因此頗有必要如今就加上它們。我是個很謹慎的程序員,因此我決定加上第3章中介紹過的日誌記錄語句。編輯後的結果分別爲程序清單4-1中的GameScene.h和程序清單4-2中的GameScene.m。
程序清單4-1 加入Scene方法的GameScene.h
#import <Foundation/Foundation.h> #import "cocos2d.h" @interface GameScene : CCLayer { } +(id) scene; @end
程序清單4-2 加入Scene方法和標準方法(包括日誌記錄語句)的GameScene.m
#import "GameScene.h" @implementation GameScene +(id) scene { CCScene *scene = [CCScene node]; CCLayer* layer = [GameScene node]; [scene addChild:layer]; return scene; } -(id) init { if ((self = [super init])) { CCLOG(@"%@: %@", NSStringFromSelector(_cmd), self); } return self; } -(void) dealloc { CCLOG(@"%@: %@", NSStringFromSelector(_cmd), self); // never forget to call [super dealloc] [super dealloc]; } @end
如今你能夠安全地刪除HelloWorldScene類了。當被詢問時,選中Also Move to Trash選項,將文件同時從Xcode項目和硬盤中刪除。同時選中這兩個文件,而後選擇Edit | Delete或從右擊菜單中選擇Delete。刪除了HelloWorldScene類以後,必須修改DoodleDropApp- Delegate.m,將任何使用HelloWorldScene的地方改成使用GameScene。程序清單4-3標出了對#import與runWithScene語句所作的必要修改。將設備方向改爲了Portrait模式,由於咱們的遊戲最適合在此模式下運行。
程序清單4-3 修改DoodleDropAppDelegate.m文件,使用GameScene類而不是Hello- WorldScene類
// replace the line #import 「HelloWorldScene.h」 with this one: #import "GameScene.h" - (void) applicationDidFinishLaunching:(UIApplication*)application { … // Sets Portrait mode [director setDeviceOrientation:kCCDeviceOrientationPortrait]; … // replace HelloWorld with GameScene [[CCDirector sharedDirector] runWithScene: [GameScene scene]]; }
編譯並運行,你會看到一個空白場景。你成功了!若是出現任何問題,請將該項目與隨書附帶的DoodleDrop01項目進行對比。
注意: 從cocos2d 0.99.5版本開始,cocos2d Xcode項目模板中增長了一個名爲GameConfig.h的文件。若是用某個cocos2d Xcode項目模板建立了一個新項目,可是發現Portrait模式不能工做,多是由於遊戲被默認設爲自動旋轉。若是在GameConfig.h中看到語句: #define GAME_AUTOROTATION kGameAutorotationUIViewController 須要把它改成如下這行語句以禁用自動旋轉: #define GAME_AUTOROTATION kGameAutorotationNone
本文摘自:iOS 5 cocos2d 遊戲開發實戰(第2版)
書 號: |
9787302303039 |
出 版 社: |
清華大學出版社 |
定 價: |
59.80元 |
出 版 日 期: |
2012-10-01 |
做 者: |
譯 者: |
||
系 列書 名: |
清圖程序設計系列 |
開 本: |
16 開 |
頁 數: |
456 |
印 刷 時 間: |
2012-10-15 |
字 數: |
694千字 |
版 次: |
2 |
包 裝: |
平裝 |
印 次: |
1 |
樣章試讀: