本次我們將帶領大家手動完成一個簡單但功能完整的打飛機游戲,實現(xiàn)飛機飛行、飛機碰撞、發(fā)射×××、敵機發(fā)射大×××、背景音樂、×××音效、分數(shù)統(tǒng)計、菜單管理等功能。它雖然不會為你贏得什么獎項,但是可以總結前面所學的所有知識,幫助大家更好地掌握cocos2d基本對象的使用,同時體驗cocos2d的強大以及易用性。
成都創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供固安網站建設、固安做網站、固安網站設計、固安網站制作等企業(yè)網站建設、網頁設計與制作、固安企業(yè)網站模板建站服務,十多年固安做網站經驗,不只是建網站,更提供有價值的思路和整體網絡服務。首先打開Xcode,使用cocos2d iOS模板新建一個項目,命名為“AirfightGame”,然后選擇一個目錄,單擊“Create”按鈕。為cocos2d項目的源代碼添加-fno-objc-arc選項讓項目支持ARC。
接下來,將所需要的資源文件,包括圖片和聲音拖到項目的“Resources”組。在游戲開發(fā)當中,通常都會使用精靈表單來優(yōu)化游戲性能,在這個小游戲當中,雖然這種性能優(yōu)化并不會有特別明顯的效果,但是建議大家以后開發(fā)游戲時都使用精靈表單來提高游戲性能。使用Zwoptex將所有圖片制作成精靈表單,生成對應的airfightSheet.png和airfightSheet.plist文件,并將這兩個文件拖到項目的“Resources”組。
現(xiàn)在,我們來為游戲添加一個菜單設置功能,在這里可以完成開始游戲、游戲設置、退出游戲等操作。步驟如下。
①選擇“AirfightGame”組并單擊右鍵,選擇“New File”,在左邊欄中選擇“cocos2d v2.x”模板,在右邊的模板類中選擇“CCNode class”模板類,“Subclass of”選擇“CCLayer”,然后單擊“Next”按鈕。命名為“MenuLayer”,然后單擊“Create”按鈕。
MenuLayer繼承自CCLayer,提供一個類方法scene供CCDirector對象調用。該類的作用是顯示一個菜單場景,讓用戶選擇。
打開MenuLayer.m文件,實現(xiàn)代碼如下。
程序清單:codes/13/13.14/AirfightGame/AirfightGame/MenuLayer.m
-(id) init { if( (self=[super init]) ) { CGSize winSize = [[CCDirector sharedDirector] winSize]; // 創(chuàng)建“開始游戲”標簽,當觸碰該標簽時,調用startGame:方法 CCMenuItemFont* startItem = [CCMenuItemFont itemWithString:@"開始游戲" target:self selector:@selector(startGame:)]; startItem.position=ccp(winSize.width/2, winSize.height*0.6); // 創(chuàng)建“游戲設置”標簽,當觸碰該標簽時,調用setting:方法 CCMenuItemFont* settingItem = [CCMenuItemFont itemWithString:@"游戲設置" target:self selector:@selector(setting:)]; // 設置“游戲設置”標簽位置 settingItem.position=ccp(winSize.width/2, winSize.height*0.4); // 創(chuàng)建控制菜單,并將兩個標簽添加進去 CCMenu* menu = [CCMenu menuWithItems:startItem,settingItem, nil]; menu.position = CGPointZero; [self addChild:menu]; } return self; }
init方法比較簡單,創(chuàng)建了兩個CCMenuItemFont,選擇標簽時會調用對應的startGame:和setting:方法,并將它們添加到CCMenu當中,再將CCMenu添加為當前層的子節(jié)點。
②添加startGame:和setting:兩個方法,實現(xiàn)代碼如下(程序清單同上):
-(void) startGame:(id)sender{ // 切換到PreloadLayer場景 CCTransitionSlideInL* transitionScene = [CCTransitionSlideInL transitionWithDuration:2.0 scene:[PreloadLayer scene]]; [[CCDirector sharedDirector] replaceScene:transitionScene]; }
startGame:方法非常簡單,當用戶選擇“開始游戲”標簽時,場景切換到PreloadLayer,在下一節(jié)中將重點介紹PreloadLayer(程序清單同上)。
-(void) setting:(id)sender{ // 切換到SettingLayer場景 CCTransitionSlideInL* transitionScene = [CCTransitionSlideInL transitionWithDuration:2.0 scene:[SettingLayer scene]]; [[CCDirector sharedDirector] replaceScene:transitionScene]; }
當用戶選擇“游戲設置”標簽時,場景切換到SettingLayer,進行游戲設置。
③同上面的步驟一樣,使用“cocos2d v2.x”模板創(chuàng)建一個類并命名為“SettingLayer”,繼承自CCLayer。該類的實現(xiàn)代碼如下。
程序清單:codes/13/13.14/AirfightGame/AirfightGame/SettingLayer.m
-(id) init { if( (self=[super init]) ) { CGSize winSize = [[CCDirector sharedDirector] winSize]; // 提示菜單項 CCMenuItemFont* musicItem = [CCMenuItemFont itemWithString:@"背景音樂:"]; musicItem.position = ccp(winSize.width*0.4, winSize.height*0.6); // 創(chuàng)建“開”和“關”菜單項 CCMenuItemFont* musicOn = [CCMenuItemFont itemWithString:@"開"]; CCMenuItemFont* musicOff = [CCMenuItemFont itemWithString:@"關"]; // CCMenuItemToggle,默認顯示“開”。開=0,關=1 CCMenuItemToggle* musicToggle = [CCMenuItemToggle itemWithTarget:self selector:@selector(change:) items:musicOff,musicOn, nil]; musicToggle.position = ccp(winSize.width*0.6, winSize.height*0.6); // 創(chuàng)建“返回主菜單“菜單項 CCMenuItemFont* returnItem = [CCMenuItemFont itemWithString:@"返回主菜單" target:self selector:@selector(backToMainLayer:)]; returnItem.position = ccp(winSize.width/2, winSize.height*0.4); // 創(chuàng)建控制菜單,并將3個標簽添加進去 CCMenu* menu = [CCMenu menuWithItems:musicItem,musicToggle,returnItem, nil]; menu.position = CGPointZero; [self addChild:menu]; // NSUserDefaults用戶選項可以用來保存用戶在操作應用的過程中設置的選項。 NSUserDefaults* userDef = [NSUserDefaults standardUserDefaults]; // 如果Bool為No,則顯示1=關 if(![userDef boolForKey:@"music"]){ musicToggle.selectedIndex = 1; } } return self; } -(void) change:(id)sender{ // 判斷mute(靜音)屬性,根據屬性狀態(tài)進行切換 if([CDAudioManager sharedManager].mute == TRUE){ [CDAudioManager sharedManager].mute = FALSE; }else{ [CDAudioManager sharedManager].mute = TRUE; } NSUserDefaults* userDef = [NSUserDefaults standardUserDefaults]; CCMenuItemToggle* tooggle = (CCMenuItemToggle*)sender; // 關=1,設置Bool為NO if(tooggle.selectedIndex == 1){ [userDef setBool:NO forKey:@"music"]; }else{ [userDef setBool:YES forKey:@"music"]; } } // 定義一個CCTransitionSlideInL場景切換效果,并使用CCDirector單例對象來切換場景 -(void) backToMainLayer:(id)sender{ CCTransitionSlideInL* transitionScene = [CCTransitionSlideInL transitionWithDuration:2.0 scene:[MenuLayer scene]]; [[CCDirector sharedDirector] replaceScene:transitionScene]; }
SettingLayer類代碼在13.13.2節(jié)中已經詳細介紹過,這里不再贅述。
④修改IntroLayer.m文件
IntroLayer默認加載HelloWorldLayer,但此時我們不再使用HelloWorldLayer作為應用的第一個場景,而是使用MenuLayer作為應用的第一個場景,因此需要修改IntroLayer,將IntroLayer改為加載MenuLayer場景。修改如下。
在IntroLayer.m文件的頂部添加所包含的頭文件:
#import "MenuLayer.h"
修改-(void) makeTransition:(ccTime)dt方法,將該方法改成下面的代碼。
程序清單:codes/13/13.14/AirfightGame/AirfightGame/IntroLayer.m
-(void) makeTransition:(ccTime)dt { [[CCDirector sharedDirector] replaceScene: [CCTransitionFade transitionWithDuration:1.0 scene:[MenuLayer scene] withColor:ccWHITE]]; }
本次我們將帶領大家手動完成一個簡單但功能完整的打飛機游戲,實現(xiàn)飛機飛行、飛機碰撞、發(fā)射×××、敵機發(fā)射大×××、背景音樂、×××音效、分數(shù)統(tǒng)計、菜單管理等功能。它雖然不會為你贏得什么獎項,但是可以總結前面所學的所有知識,幫助大家更好地掌握cocos2d基本對象的使用,同時體驗cocos2d的強大以及易用性。
首先打開Xcode,使用cocos2d iOS模板新建一個項目,命名為“AirfightGame”,然后選擇一個目錄,單擊“Create”按鈕。為cocos2d項目的源代碼添加-fno-objc-arc選項讓項目支持ARC。
接下來,將所需要的資源文件,包括圖片和聲音拖到項目的“Resources”組。在游戲開發(fā)當中,通常都會使用精靈表單來優(yōu)化游戲性能,在這個小游戲當中,雖然這種性能優(yōu)化并不會有特別明顯的效果,但是建議大家以后開發(fā)游戲時都使用精靈表單來提高游戲性能。使用Zwoptex將所有圖片制作成精靈表單,生成對應的airfightSheet.png和airfightSheet.plist文件,并將這兩個文件拖到項目的“Resources”組。
現(xiàn)在,我們來為游戲添加一個菜單設置功能,在這里可以完成開始游戲、游戲設置、退出游戲等操作。步驟如下。
①選擇“AirfightGame”組并單擊右鍵,選擇“New File”,在左邊欄中選擇“cocos2d v2.x”模板,在右邊的模板類中選擇“CCNode class”模板類,“Subclass of”選擇“CCLayer”,然后單擊“Next”按鈕。命名為“MenuLayer”,然后單擊“Create”按鈕。
MenuLayer繼承自CCLayer,提供一個類方法scene供CCDirector對象調用。該類的作用是顯示一個菜單場景,讓用戶選擇。
打開MenuLayer.m文件,實現(xiàn)代碼如下。
程序清單:codes/13/13.14/AirfightGame/AirfightGame/MenuLayer.m
01 | -(id) init |
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
當前題目:瘋狂ios講義之瘋狂打飛機(1)-創(chuàng)新互聯(lián)
文章地址:http://jinyejixie.com/article28/dedccp.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供網站改版、品牌網站設計、網站維護、網頁設計公司、App開發(fā)、網站設計
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)