C#開發WPF/Silverlight動畫及遊戲系列教程(Game Tutorial):(四十六)飛航模式 – 自由VS天空

來源:互聯網
上載者:User

    曾幾何時開始迷戀無垠的天際,幻想著插上翅膀去飛翔。《天翼之鏈》、《奇蹟》、《夢幻誅仙》向無數玩家展示了飛行的世界。翅膀,常常是一種身份的象徵,但如能再賦予它自由的含義,好比《永恒之塔》中如履空氣般暢快淋漓,遊戲魅力自然無可阻擋。

如何讓遊戲中的角色自由飛翔?角色飛行時有何特殊之處這是遊戲在設計需求時最需要考慮的問題。在如《星鑽物語》、《天翼之鏈》等Q版網路遊戲中,翅膀僅僅作為一種美麗的裝飾品,強者的象徵,附加屬性除此之外毫無他用;又如《奇蹟》、《封神榜》等遊戲,當角色裝備翅膀後移動模式會變為“超低空”飛航模式,但僅僅表現為移動時外表樣式的改變,當遇到任何地面障礙時仍是無法飛越的;而在2D的《夢幻誅仙》中,飛航模式卻體現得到華麗而不失真實。當主角在天空時,地面的所有對象物體均會被縮小為原始的60%左右比例,並且在天空層與地面層之間覆蓋著一層透明的雲霧繚繞效果,仿若真正置身於天際:


這種2.8D的視覺效果在Silverlight中可以通過兩種途徑來實現:HLSL渲染和按需縮放。如果未來的Silverlight版本能完全激發GPU的渲染功能,那麼利用HLSL直接對精靈托盤(Carrier)和地圖托盤進行相應比例的縮小渲染後,再對主角等飛空的對象進行放大複原二次渲染即可,其中在天空層與地面層之間放置一張透明度的雲霧PNG圖片,一切其實可以這麼簡單滴;但在目前Silverlight還無法很好調用GPU的前提下,我們可以通過迴圈遍曆所有在遊戲視窗中顯示的對象,如果不是在飛行狀態的,則尺寸縮小為原始的60%,反之則不變,具體邏輯還算簡單,只是需要特別注意一下地圖的處理,例如地圖使用的是Tile塊或整圖就無大礙,如果是切片按需載入的則相對麻煩些,需要多寫演算法。額外的,精靈在飛行過程中將無視一切障礙,並且移動速度會相比在地面上快一些,同時還需要考慮降落時所處的座標是否為障礙物,否則不允許著陸等邏輯。

《夢幻誅仙》算是目前層次效果最好的2D網遊之一,由於本教程樣本遊戲結構架設之初並未考慮陸-空分層,因此本節暫時以實現主角傳統低空飛航模式為主,即從外觀上體現,並同時能實現障礙物的飛躍。

這裡我準備的素材來源於《封神榜2》的翌使,精靈要飛行,當然需要添加一個IsFlying屬性來描述是否正處于飛行狀態,如果是,則遇到障礙物碰撞檢測均忽略掉,例如:

private bool WillCollide(QXSprite sprite, Point p) {

     if (sprite.IsFlying) { return false; }

    ……

}

然後將翅膀道具添加進遊戲,在本教程樣本遊戲中,為簡單起見,我將翅膀歸到衣服類;並添加了一個新的武器:弓。在天上飛的,用弓才酷嘛,弓的武器屬性均記錄在Config.xml設定檔中,其中有兩個參數非常關鍵:AttackRange和LongDistanceAttack分別代表攻擊距離和是否遠程物理攻擊。另外,由於主角的素材來源於兩個不同遊戲,因此大家在運行示範程式時遇到錯位情況請不要見怪啦,理解原理為主:

裝備弓後:

嘿嘿,插上翅膀的主角此時可以進入所有示為陸地障礙物的地區了。由於弓有400的攻擊射程,接下來我們不妨引上一群怪,並飛到障礙物上,一箭一箭的射得怪物們毫無脾氣,陸-空不同嘛,這就是飛行的特權:

 

很酷吧,一丁點代碼的修改就實現了這麼有趣的功能。當然,在實際製作中,大家應該專門設定一個翅膀裝備格,並根據需要處理好陸-空之間的障礙物邏輯與戰鬥邏輯,如《永恒之塔》的空戰形式等。如果想製作類似《夢幻誅仙》的陸-空分層視覺效果,那麼在一開始為遊戲設計架構時就應該做好鋪墊,否則後期修改會複雜許多。

主角裝備上弓後已經具備了遠距離攻擊能力,細心的朋友一定有發現似乎還缺少了些什麼。是的,射擊後怪也傷血了,但始終都沒見有箭飛出?嘿嘿,這就是下一節要講的遠距離攻擊及單體魔法攻擊效果了,敬請關注。

本節源碼請到目錄中下載,線上示範地址:http://cangod.com

作者:深藍色右手
出處:http://alamiye010.cnblogs.com/
教程目錄及源碼下載:點擊進入(歡迎加入WPF/Silverlight小組 WPF/Silverlight部落格團隊)
本文著作權歸作者和部落格園共有,歡迎轉載。但未經作者同意必須保留此段聲明,且在文章頁面顯著位置給出原文串連,否則保留追究法律責任的權利。
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.