仿《雷霆戰機》飛行射擊手遊開發--遊戲對象

需求分析

    既然咱們作的是打飛機遊戲,那須要有哪些遊戲對象呢?觀察一下下面這個遊戲中的圖片。首先,主角固然是飛機,有玩家飛機、兩側的僚機、敵機。飛機上裝有各式各樣的武器:普通子彈、導彈、激光等。若是隻是一成不變的飛機打飛機,子彈沒有變化,飛機也沒有變化,那也太沒意思了。因此咱們還增長了道具,當敵機被擊落時,會有必定的概率爆出寶石和其餘各類獎勵道具,好比武器升級、戰機暴走、修復護甲、超級必殺、量子護盾。ide

咱們來總結一下:函數

  • 飛機有哪些基本功能?    飛行、射擊、爆炸;
  • 飛機有哪些基本屬性呢? 生命、攻擊、碰撞體、外觀;
  • 飛機有哪些種類呢?    
    • 玩家飛機:具備特殊的控制方式、具體左飛、右飛、暴走變形等特殊的外觀;
    • 僚機:玩家飛機的附屬,生命:無敵,與玩家飛機共存亡;
    • 必殺僚機:無敵,飛行動做固定:從下方飛出來,射擊n秒,往下飛走;
    • 敵機:從屏幕的某處自動飛出,不射擊或者自動射擊;
    • 高級敵機:從屏幕的某處自動飛出,飛到固定位置後,變形,而後射擊;
    • boss:初始動做與高級敵機同樣,不過boss支持屢次變形,當血量少於某幾個固定的值後,會觸發boss的變形,每變形一次,攻擊力加強。當boss擊落後,會產生巨大的爆炸。
  • 武器有哪些基本功能?    射擊、爆炸;
  • 武器有哪些基本屬性呢? 攻擊、碰撞體、外觀;
  • 武器有哪些種類呢?    
    • 散彈:各種平行、開花子彈;
    • 自定義子彈:之後詳述;
    • 跟蹤導彈:始終會跟蹤最近的敵機飛行,直至擊落敵機;
    • 激光:矩形形狀,傷害值按接觸的時間計算;
  • 道具備哪些基本功能?    飛行;
  • 道具備哪些基本屬性?    道具類型、不一樣的道具對飛機產生不一樣的做用;
  • 道具備哪些種類呢?
    • 寶石:至關於錢,能夠用來解鎖、購買其餘裝備
    • 武器升級:使玩家飛機的武器提升一個等級;
    • 戰機暴走:使玩家飛機的武器提升到最高等級;
    • 修復護甲:恢復玩家飛機必定的生命值;
    • 超級必殺:從屏幕底部飛出一個巨大的僚機,發出超級激光,秒殺屏幕中的全部敵機(以下圖);
    • 量子護盾:給玩家飛機增長一個護盾,該護盾能抵擋一次子彈的攻擊,同時,護盾被擊中時能釋放出特殊的能量,能將屏幕中全部的子彈都轉化爲寶石;

「超級必殺」的清屏效果是否是感受很爽!!spa

右下角金黃色飛機的外圍是否是有一圈半透明的藍色圓環?這就是量子護盾。.net

類設計

好了,需求分析的差很少了,咱們如今來抽象一下這些遊戲對象,以下圖:設計

  •     首先,咱們對全部的遊戲對象進行分析,總結出GameObject這個派生自Sprite的類,其中包含了幾個經常使用的方法:pause()/resume()/getBody()/setBody(),
    • pause()/resume():使遊戲對象暫停、繼續運動。這兩個函數與Node中的pause()/resume()不一樣,這兩個函數在使遊戲對象自己暫停/恢復的同時,會使全部的子節點都調用一遍pause()和resume();
    • getBody()/setBody():爲簡單起見,咱們沒有使用物理引擎,而是咱們定義碰撞體。每個遊戲對象都有一個碰撞體,當不一樣遊戲對象的碰撞體發生碰撞時,會產生不一樣的效果,例如爆炸、產生獎勵等等。這裏的body是一個簡單矩形,咱們本身定義矩形的大小和相對於Sprite的位置。
  •      接着,飛機(Aircraft)、武器(BulletGroup/Bullet)、道具(Reward)都繼承自GameObject。

    這裏須要重點關注一下BulletGroup和Bullet。咱們能夠把BulletGroup理解成包含彈匣的一把槍,把Bullet理解成單顆子彈。槍(BulletGroup)內包含了n發子彈(Bullet)。槍(BulletGroup)的不一樣,決定了子彈(Bullet)的外觀、子彈的初始位置和飛行軌跡不一樣、子彈發射的頻率和同時射出的數量不一樣。 因此,咱們在BulletGroup中放了vector<Bullet>這個成員變量,這是一個簡化的「子彈池」,當須要發射子彈時,從池中獲取子彈,當子彈爆炸或者飛出屏幕時,子彈須要回收,放回池中。對象

 

轉載請註明:http://www.javashuo.com/article/p-wktgqxbc-bu.htmlblog

項目首頁:https://www.oschina.net/p/raiden繼承

相關文章
相關標籤/搜索