測試環境:
Mac OS X系統版本10.8.5
Xcode版本5.1
開發語言:Objective-C
游戲框架:iOS7自帶的Sprite Kit框架
1、打開Xcode,Create a new Xcode project,選擇iOS目錄下的Application下的SpriteKit Game工程模版,點擊next。
2、Product Name:這里輸入項目名稱為FlappyBird,其它的Devices下選擇iPhone,點擊Next。接下來要求保存,隨便保存一個目錄下,不用新建文件夾Xcode會自動生成一個以項目名稱命名的文件夾,將工程保存在其中,我是保存在文稿目錄下,點擊Create。
3、項目工程建好的界面如下所示:
4、點擊Xcode左上角的倒三角,運行一下程序,運行成功后會調出iOS模擬器,我們看看模擬器的屏幕上都有什么?首先模擬器的屏幕是藍色的背景,背景上有hello,world!字符,右下方顯示了一些字符,當用鼠標點擊屏幕時,會出現一個旋轉的飛機,每點一次屏幕就出現一個旋轉的飛機,看的眼睛好暈啊啊,哈哈。
說明:這里右下方的1node是當前有一個節點的意思,它記錄一共有多少節點,在程序里可設置不顯示,這里顯示是因為在游戲開發初期,在調試游戲時,可以清楚的了解游戲中有多少節點。現在這個節點是hello,world!這個標簽節點。之后,當點擊屏幕時,出現旋轉的飛機時,會發現node前的數字會增加,因為每點擊屏幕一下,就添加一個精靈節點。60.0fps是每秒60一幀。
可以發現現在的節點數變成2了,后面的變成59.0fps了,因為添加了一個精靈節點,所以算上hello,world!這個標簽節點一共有兩個節點,59.0fps是當前是59.0fps幀圖像每秒。
5、我們回到Xcode環境中,點擊運行按鈕右側的正方形的按鈕停止當前運行的程序。簡單介紹下Xcode這個軟件的界面。最上面區域是工具欄,左側區域是導航欄,中間區域是編輯區,右側區域是工具區,下面區域
是調試區。
6、在繼續之前,我們先了解下iOS應用程序的啟動順序
,首先看一下下面的圖片,之后我會對其進行說明。
dong
首先執行的是main()函數,main()調用UIApplicationMain(()方法,UIApplicationMain(()創建UIApplication,UIApplication委托AppDelegate代理,UIApplicationMain(()創建AppDelegate代理,下載Info.plist屬性列表,UIApplication創建和管理整個應用程序的循環,緊接著UIApplication給
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
方法發送消息創建和顯示應用程序的窗口和設置應用程序的根試圖控制器。
7、接下來我們看一些導航區,文件夾里的具體文件,我們現在打開所有文件夾,使其子文件都顯示出來。
FlappyBird文件下的文件是關于游戲的相關文件,這里的文件是項目模版自動生成的文件,一會我們的這次的FlappyBird的主場景里的程序就是修改MyScene.h和MyScene.m文件。AppDelegate.h和AppDelegate.m就是上面說的代理,這個文件我們這里不需要改動。緊接著是ViewController.h和ViewController.m,這個是應用程序的根仕途控制器,iOS應用程序滿足
這里的具體代碼后面會詳細說明。
Supporting Files文件夾里的文件主要說明下main.m這個是應用程序最先調用的文件,一般情況下這里的內容不需要改動,幾乎就不要去改動,反正我是沒動過這里的內容,哈哈。
Framework文件夾下放著的是應用程序用到的框架,用到什么我們就添加什么框架,這里我們最主要用到了SpriteKit.framework這個框架,因為我們在編寫游戲程序。
Products文件夾下的文件,從文件夾名稱可以猜到這里是應用程序最終可以安裝到真機的文件
凡是.app后綴的為iOS應用程序,類似的Windows平臺的應用程序以.exe后綴。
7、接下來我需要將我們這次要編寫的游戲的美術資源導入到項目工程中,美術資源來源于網絡,將裝有美術資源的文件夾拖拽到Xcode的導航區,會出現如下截圖所示:
勾選的和截圖一樣就好。
說下美術資源部分:
首先是游戲的背景圖片
白天時的背景圖片,名叫:Day_Background
夜晚時的背景圖片,名叫:Night_Background
滾動的地面,名叫:Bottom_Scroller
口沖下的綠管子,名叫:Downward_Green_Pipe
口沖上的綠管子,名叫:Upward_Green_Pipe
游戲名稱,游戲開始時出現的,名叫:FlappyBirdText
游戲結束時出現的,名叫:GameOverText
游戲預備開始時出現的,名叫:GetReadyText
教程,提示如何玩這款游戲的提示。名叫:TapToStart
按鈕,這個不用多說了,都懂,名叫:PlayButton
最后,最后,是我們的主角,像素鳥
名叫:Yellow_Bird_Wing_Down
名叫:Yellow_Bird_Wing_Straight
名叫:Yellow_Bird_Wing_Up
為什么會有三個呢?仔細觀察這三個圖片會發現不一樣,這是因為這三個圖片組合在一起,間隔合適的時間循環播放,就會給人一種像素鳥是在扇動翅膀飛翔的趕腳,其實我們看的說有動畫、視頻等都是在播放圖片,這么說就懂了,星爺的電影武狀元蘇乞兒里,祥龍十巴掌的第十八式是翻動正本武功秘籍,產生了一個動畫,但是單獨看某一頁就是靜態的,連續翻動就產生了一個動畫,這里的像素鳥一個道理,如果就一張圖片,像素鳥是不動的,給人的感覺是死板的,那樣的話,會讓人很反感的,至少不會向之前那么火,哈哈,一張圖片死,多張圖片產生動作活。
8、將模版里自帶的飛機圖片刪除,左鍵選中右鍵選擇Delete,提示時選擇Move to Trash。打開MyScene.m文件,鎖定到如下截圖。這里我們需要刪除一些代碼,再刪除之前我們要先分析一下,它自動生成的代碼。
這個是MyScene這個場景用于初始化場景尺寸大小的方法。
if里的表達式中父類給initWithSize:方法發送消息,完成的話,執行大花括號里的語句。
self.backgroundColor = [SKColor colorWithRed:0.5 green:0.15 blue:0.3 alpha:1.0];
往前看最開始運行時那個截圖,可以知道屏幕的背景是藍布垃圾的顏色,就是上面的語句完成的。
這里改變紅、綠、藍、透明度后面對應的數值,就可以改變背景顏色。
相互麻煩的話,可以這樣寫self.backgroundColor = [SKColor blackColor];這樣背景顏色就被設置成黑色了,相應的還有,redColor、greenColor、blueColor等等,使用三基色加透明的方法可以設置一些特別的顏色。
這里的顏色是這個場景的顏色,其實的設置成啥樣也看不到,會被游戲背景圖片擋住,哈哈。
接下來的是創建了一個標簽節點的實例。
SKLabelNode *myLable = [SKLableNode labelNodeWithFontNamed:@"Chalkduster"]; //實例化標簽節點,用名為Chalkduster的字體,標簽節點就是可以顯示字符,字符當讓需要有字體的設置了。
myLabel.text = @"Hello,World!";//設置標簽節點顯示的內容,這里改動@“”;里的內容就可以改變標簽節點顯示的內容。
myLabel.fontSize = 30;//設置標簽節點的字體大小,這里設置為30
myLabel.position = CGPointMake(CGRectGetMidX(self.frame),CGRectGetMidY(self.frame));//緊接這要把標簽放在屏幕的哪里呢?不能隨便放吧,所以設置它的位置,這里放置再屏幕的中點,節點默認的錨點在其節點的中心,所以不設置標簽節點的錨點的話,把節點的位置設置在屏幕的中心,標簽節點就被設置在屏幕的中心。
[self addChild:myLabel];//把標簽節點添加到場景中,這樣我們就會看到標簽了。