HTML5遊戲開發進階 9:新增武器和戰鬥

CopperDong發表於2018-02-13

    將為車輛、飛行器和炮塔裝上武器,通過執行戰鬥指令,如進攻、守衛、巡邏和追蹤等,允許單位以一種智慧的方式戰鬥。最後,我們還要實現戰爭迷霧,在地圖上限制玩家的視野,這將允許玩家使用一些更有趣的戰鬥策略,如偷襲、伏擊。

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

    禁止在迷霧上建造建築



相關文章