大家好哦!在這篇文章中,我將放出一個 Windows 手機遊戲(或至少是一個遊戲的開始......),並希望它給大家慢慢帶來更多的樂趣。同時給大家介紹所需要的基本技術。然後,我將介紹其中的一些步驟,我希望這能一直引起你的興趣,直到文章的結尾。
同時我也不得不感謝一直支持我的滷麪網版主,是他讓我提起興趣寫了這麼一篇文章,再次感謝滷麪網,一個非常不錯的wp7開發論壇,後面我也將再次向大家發佈幾篇高質量文章,請大家到滷麪上找我吧,呵呵
好了,正題開始..
“海盜! 是一個wp7上的用C#和XNA做出來的遊戲,使用Farseer物理引擎。遊戲的想法,主要是啓發於Rovio的“憤怒的小鳥”的遊戲,在2011年年底達到500萬次的下載。憤怒的小鳥可能已經上癮了世界各地的許多人,但是從我個人而言,我不沉迷於遊戲本身,而是追求創作一個這樣的遊戲所需要的過程。
而不是鳥,而是大炮炮彈。而不是豬,而是大海盜船的海盜。在這裏你的任務是使用大炮瞄準,並銷燬所有海盜。
Farseer物理引擎
這是一個很酷的開源物理引擎,一個開放源碼項目(順便說一句,憤怒的小鳥也是使用Box2D的)。所不同的是用的 C + +的Box2D(並已被移植到多國語言),而本遊戲用的C#,Silverlight和XNA。
調整遊戲每秒60幀
1.爲了達到最大幀每秒(約60幀),你必須修改你下載的farseer的源代碼:
2.雙擊“Samples XNA WP7 ”解決方案。選擇“Upgrade Windows Phone Projects...
“ 他們全部升級到最新的Windows Phone 7.5芒果。
在遊戲類的構造函數中,添加此事件處理程序:
3.然後添加此事件:
4.在遊戲類的初始化方法中,確保修改PresentationInterval參數爲PresentationInterval.One:
幸運的是,我已經修改出了Farseer物理引擎兼容的編譯版本,它能在 Windows Phone 7.5上運行儘可能最好的幀率。這將給對farseer引擎與遊戲開發有興趣的讀者帶來非常有用的幫助,
轉換成物理對象的圖像
對遊戲中的所有動態創建對象進行貼圖。這是 Farseer一個非常不錯的功能,使我們的開發更容易。我們留下的空白與透明色,如圖,
Farseer使用BayazitDecomposer.ConvexPartition的方法,創建一個大凹多邊形的小凸多邊形:
|
處理輸入循環
Farseer 引擎處理輸入循環的接口,使我們有機會來檢測和處理用戶的手勢。
此方法是負責:
檢測左邊搖桿運動,並轉化成大炮運動。
檢測的右邊“A”的按鈕,射擊大炮。
|
Update循環
在XNA框架中,更新循環被調用時,需要處理遊戲邏輯。這可能包括遊戲狀態管理,處理用戶輸入,或數據的更新。通過重寫此方法,我們可以添加邏輯,具體到我們的海盜遊戲我下面也會慢慢講。
在XNA中, Update方法是和draw方法組合起來用的,你必須考慮到每個對象都有自己的特定角色。也就是說,一定不要把draw寫入到了update中,也不要在draw中去更新update。
update 類主要有以下用途:
計算新的雲的位置。有3層雲 ,每一層以自己的速度移動。
海的外觀是由4個現有的圖片紋理輪流顯示。
根據遊戲狀態轉換移動camera (也就是說,遊戲一開始是顯示你的海盜船,然後camera移動到你的船)。
要沿炮彈描述的路徑更新camera位置。這是有用的,以保持遊戲動作的軌道。
必要時控制camera變焦。
也許最重要的是:更新大炮球的位置(隨着煙霧留痕跡飛)
|
在update函數中一個很重要是使用 GameTime參數。此參數告訴我們時間,因爲遊戲是最後一次更新花了多少時。正如你可以在上面看到,它使我們能夠正確地計算cpu的速度波動的干擾。否則,你可能會看到比賽快或慢,取決於你手機在某一時刻的cpu的處理速度。
draw循環
是XNA框架繪製的重要模塊。我們重寫此方法來繪製我們的海盜遊戲所需的所有幀。
這個循環處理了下面所說的一部分內容:
繪製背景紋理
繪製的藍天,白雲,大海和船
繪製了炮彈,大炮和煙霧的痕跡
繪製了現場的海盜和其他對象。
得分和最高分數。
|
首先,我們繪製的天空。然後我們繪製以水平不同的速度運動的雲 ,然後我們畫的大海,然後船。最後,我們得出的動態元素:炮彈,大炮,比分。
最後的思考
我希望你喜歡!如果你有話要說,請到滷麪網(codewp7.com)問答區聯繫我,我會很高興知道你在想什麼。同時wp7交流QQ羣172765887中,也能找到我的身影,感謝大家
全部源碼下載請猛擊
原文請見
http://www.codeproject.com/Articles/322715/WPPirates