飛機的武器類型眾多,大致可分為子彈、跟蹤導彈和激光。子彈是直線飛行的;導彈會自動跟蹤目標,可曲線飛行;而激光是一道光束,可持續地對照射到的敵機產生傷害。子彈根據一次性發射的數量,可分為單發和多發,根據子彈發射的方向可分為:自動瞄準、平行、散射。本文將結合代碼講述有關飛機武器的程序設計。
程序設計
先看一下本游戲中有關武器的類的設計 類結構 其中,BulletGroup可理解為彈匣,Bullet就是其中一顆一顆的子彈,每顆子彈都有相同的屬性,包括外觀、傷害值以及飛行屬性。而繼承自Bullet的五個子類分別為:
ScatterBullet 散彈。含單發和多發,平行和散射。
AimScatterBullet 自動瞄準子彈。繼承自ScatterBullet,但是初始發射角度指向距離最近的敵機(飛行軌跡是直線,發射后不會改變方向)。
CustomBullet 可自定義每顆子彈初始的方向、速度。
Missile 跟蹤導彈。顧名思義,在飛行過程中會自動改變方向,始終對準敵機,但受限于飛行速度、角速度等參數,也可能無法射中目標。
Laser 激光。一道光束,傷害值依賴于接觸的時間。