HTML5遊戲開發進階 9:新增武器和戰鬥
將為車輛、飛行器和炮塔裝上武器,通過執行戰鬥指令,如進攻、守衛、巡邏和追蹤等,允許單位以一種智慧的方式戰鬥。最後,我們還要實現戰爭迷霧,在地圖上限制玩家的視野,這將允許玩家使用一些更有趣的戰鬥策略,如偷襲、伏擊。
9.1 實現戰鬥系統
所有的單位和炮塔都具有自己的武器和炮彈型別。攻擊敵人時,單位首先進入射程,轉向目標,然後向敵人發射一枚炮彈。單位發射炮彈後,需要等待武器重新裝填炮彈,才能進行下一次發射。
炮彈本身是一個獨立的單位,它有自己的動畫邏輯。發射後,炮彈將徑直飛向目標,接觸目標後爆炸。
新增炮彈:bullets.js
定義了四種炮彈型別:燃燒彈,導彈,榴彈,子彈。每一種炮彈都有一些共同的屬性。
- speed:炮彈飛行的速度
- reloadTime:裝填時間,兩次發射之間動畫迴圈的次數。
- damage:破壞力,爆炸時對目標造成的破壞程度
- range:射程,炮彈失效前能夠飛行的最大距離。
定義了兩個動畫模式:fly和explode。fly模式有八個方向,類似於車輛和飛行器。explore模式僅有一個方向
實現戰鬥命令:
飛行器的戰鬥指令:
- attack:攻擊,在目標的射程範圍內移動,並向目標射擊。
- float:停留,在某一點停留,攻擊任何靠近的敵人
- guard:守衛,跟隨一個友方單位,攻擊任何靠近的敵人
- hunt:搜尋,主動在整張地圖中搜尋並攻擊敵人
- patrol:巡邏,在兩點之間來回移動,並攻擊任何靠近的敵人
- sentry:哨戒,在某一點停留,攻擊敵人,比float模式更主動
選中飛行器後,右擊敵方或友方單位會命令飛行器攻擊或守衛該單位。直升機可以攻擊地面和空中的單位,但戰鬥機只能攻擊空中的單位。
通常,sentry、hunt、patrol指令模式僅供計算機AI使用,玩家無法直接向自己的單位下達這些指令。這樣可以增強遊戲對玩家的挑戰性。
車輛的戰鬥指令:
- attack:攻擊,在目標的射程範圍內移動,並向目標射擊。
- float:停留,在某一點停留,攻擊任何靠近的敵人
- guard:守衛,跟隨一個友方單位,攻擊任何靠近的敵人
- hunt:搜尋,主動在整張地圖中搜尋並攻擊敵人
- patrol:巡邏,在兩點之間來回移動,並攻擊任何靠近的敵人
- sentry:哨戒,在某一點停留,攻擊敵人,比float模式更主動
9.2 建立智慧的敵人
敵人AI的主要目的是增強關卡的挑戰性,為關卡中的玩家提供更精彩的遊戲體驗。重要的是,對RTS類遊戲,尤其是單人戰役模式,敵人的AI並不需要像象棋大師一樣強大。事實上,戰鬥指令模式和條件指令碼事件的簡單組合,就足夠提供給玩家非常強的遊戲體驗了。
通常,使敵人更聰明的方式就是,在每一個關卡,敵人的AI都不一樣。
在簡單的關卡中,玩家和計算機扮演的敵人都沒有任何生產性設施,只有地面單位,我們唯一能做的就是驅動敵軍去進攻玩家。這類關卡中,patrol模式和sentry模式往往被極為頻繁地使用。我們可以建立這樣一個簡單的關卡:某個固定的時間或某個固定的時間(比如,當玩家到達某個地點或建造了某座建築)發生時,玩家就會遭到敵軍的攻擊。
在更加複雜的關卡中,我們允許敵人建造單位,並使用時間觸發器和hunt指令,在固定的時間間隔後,集合敵軍單位去攻擊玩家。這樣遊戲就更具有挑戰性。
小技巧:你可以基於不同的難度設定來分別實現觸發器和起始單位,這樣對同一個關卡,玩家也可以選擇簡單模式或挑戰模式。
9.3 新增戰爭迷霧
戰爭迷霧通常是指,覆蓋著地圖上所有未探索區域的深色的覆蓋物。當玩家單位在地圖上移動時,迷霧在單位的視野中消失。
為遊戲帶來了“探索”和“陰謀”元素。單位可以在迷霧下隱藏起來,我們也能夠使用隱藏基地、伏擊、偷襲等策略。
有些RTS遊戲在區域被探索之後,迷霧就永久移除了,還有一些遊戲僅僅移除玩家單位的視野內的迷霧,一旦單位離開,迷霧又會重新覆蓋。我們的遊戲使用第二種實現。
fog.js
禁止在迷霧上建造建築
相關文章
- HTML5遊戲開發進階 8 :新增更多的遊戲元素HTML遊戲開發
- HTML5遊戲開發進階 10:完成單人戰役HTML遊戲開發
- HTML5遊戲開發進階 12:多人對戰遊戲操作HTML遊戲開發
- HTML5遊戲開發進階 11:WebSocket與多人對戰模式HTML遊戲開發Web模式
- HTML5遊戲開發進階 5 :建立即時戰略遊戲世界HTML遊戲開發
- HTML5遊戲開發進階 6 :加入單位HTML遊戲開發
- HTML5遊戲開發進階 4 :物理引擎整合HTML遊戲開發
- HTML5遊戲開發進階 3 :物理引擎基礎HTML遊戲開發
- HTML5遊戲開發進階 7 :單位智慧移動HTML遊戲開發
- HTML5遊戲開發進階 2 :建立基本的遊戲世界HTML遊戲開發
- vim進階之新增ctags和cscope
- HTML5遊戲開發進階指南(亞馬遜5星暢銷書,教你用HTML5和JavaScript構建遊戲!)HTML遊戲開發亞馬遜JavaScript
- HTML5移動遊戲開發高階程式設計 9:自建Quintus引擎(1)HTML遊戲開發程式設計UI
- CoreText進階(七) 新增自定義View和對其View
- HTML5 進階系列:web StorageHTMLWeb
- MySQL 進階實戰MySql
- 前端開發入門到實戰:HTML5進階FileReader的使用前端HTML
- HTML5進階FileReader的使用HTML
- HTML5遊戲開發(四):飛機大戰之顯示場景和元素HTML遊戲開發
- HTML5 canvas遊戲開發實戰 5 : 石頭剪刀布HTMLCanvas遊戲開發
- Xcode 9 —進階的 iOS SimulatorXCodeiOS
- 前端進階系列(三):HTML5新特性前端HTML
- HTML5 進階系列:indexedDB 資料庫HTMLIndex資料庫
- 《刺客信條:英靈殿》如何改進系列戰鬥系統?
- HTML5 canvas遊戲開發實戰 6 : 俄羅斯方塊HTMLCanvas遊戲開發
- HTML5移動遊戲開發高階程式設計 3:試飛結束,向移動進發HTML遊戲開發程式設計
- 機器學習30天進階實戰機器學習
- 前端開發入門到實戰:HTML5新增和廢棄的標籤前端HTML
- HTML5 進階系列:canvas 動態圖表HTMLCanvas
- python進階(9)多執行緒Python執行緒
- 解構遊戲戰鬥:戰鬥元素分解與設計原則遊戲
- 雷霆戰機 裝備進階材料攻略
- html5進階學習第二天HTML
- HTML5 進階系列:檔案上傳下載HTML
- HTML5 進階系列:拖放 API 實現拖放排序HTMLAPI排序
- 阿里開源HTML5小遊戲開發框架Hilo實戰教程阿里HTML遊戲開發框架
- 王者榮耀進階戰令怎麼獲取?榮耀戰令進階版的獲取方法
- 玩轉搜狗“文字表情” 分分鐘get鬥圖進階新技能!