資訊內容
Scratch第70講:飛機大戰(二)
想了解編程技巧,就請點擊上面藍字:跟我學Scratch編程,關注CC哥
上一講做了飛機控制的部分,今天我們一起做一下敵機的部分,CC哥在寫這篇帖子的時候,也沒想全敵機的部分都可以做哪些顯得游戲更生動。
敵機的程序構思
敵機攻擊模式,在CC哥想來大概有幾點:
1:敵機數量很多,但是大部分子彈不多且數量慢。敵機少了玩家沒快感,子彈太多太快,那就沒法玩了。
2:敵機出場要有兩種,一種編隊出場,整整齊齊的出來一組飛機,飛行方向不變。一種就是單個出場,但是目標向我們的戰機沖來,想要撞毀我們的玩家。
3:敵機種類應該有很多,不過CC哥目前只找了兩張敵機的元素,一個戰斗機一個轟炸機,那么轟炸機要和戰斗機不一樣,轟炸機那么大,肯定要禁打一些,可以多挨上幾炮,同時,轟炸機攻擊方式可以一次出一排炸彈。
大概的攻擊思路上面差不多了,咱們看看程序怎么玩:
編隊敵機出場
編隊的隊形,大家可以設計很多種,CC哥作為示范教學就做三種好了。三種隊形隨機出場。間隔的時間也是隨機的。
用自定義命令容易讓代碼更加容易讀,后續在升級或更新代碼的時候也會影響最小,所以建議大家在做較復雜的程序時要多用自定義命令。
敵機肯定是用克隆體來做了,攻擊隊形的自定義模塊:
注意敵機都是從最高處出來的,如果有隊形,那么肯定是一排一排出現的,那么在隊形里的每一排戰機克隆后,加入等待命令,等待時間的長短就代表了敵機出場的間距。
程序的關鍵部分就是克隆體的代碼部分,CC哥喜歡把克隆體的進程分開做,這樣程序就易懂不混亂,自己在糾錯的時候也容易找到出錯的位置。
我們看看敵機的克隆體有幾個事件同時發生:
1:克隆體向下移動:
CC哥沒有刪除克隆體的偵測條件沒有用“碰到舞臺邊緣”是因為,克隆體的出場位置就已經是在舞臺邊緣上了,所以這個檢測就沒有意義。只能用敵機的位置作為判斷條件才合理。
2:敵機的動畫效果,上一講說了,用螺旋槳旋轉的效果來增加敵機的動畫效果。
3:敵機發射子彈:
這部分需要有點程序經驗,因為發射子彈的敵機是克隆體,同時子彈在這個游戲里肯定也是克隆體。那么就面臨了不同角色克隆體之間的互動問題。CC哥之前的講座就明確講了,克隆體之間的互動不建議用大家最熟悉的消息傳遞來做,而是應該通過公共變量來進行動作的同步?!鞍l射子彈”這個變量就是這個用來做動作同步的變量。
在發射子彈這個部分,CC哥做的是讓子彈去找敵機,每一個敵機發射子彈時,會把飛機的坐標位置給到“子彈位置X”和“子彈位置Y”,然后讓發射子彈角色跑到該坐標上再進行發射子彈的操作。
如果想免費獲得CC哥的講座中的程序代碼以及游戲素材,可以通過掃描二維碼關注《跟我學Scratch編程》,然后點擊獲取代碼即可。
4:敵機被擊中或碰到舞臺邊緣
當被擊中的時候,生命減去1,如果撞到戰機,那么直接毀滅。CC哥放了一個爆炸效果造型進去,一旦敵機被擊毀,就播放一段爆炸效果。
敵機子彈
敵機子彈這個是配合敵機的角色,所以這段代碼就是去不斷檢測是否需要發射子彈,一旦檢測到需要發射子彈,就馬上跑到發射位置克隆自己。
子彈面向戰機飛去,碰到戰機或舞臺邊緣處消失。
自殺式敵機
飛機的角色造型不好找,但是CC哥把敵機的造型顏色重新涂了一下,馬上又變成一種新敵機了。這個敵機的攻擊方式就是CC哥上一講說的,直接撞向我方戰機。
出場位置確定
制作敵機的動畫效果和攻擊程序。
被擊中的代碼。
這個自殺式敵機的代碼相對簡單,就不講解了。
戰機部分
戰機部分增加了這段代碼,就是當被敵機擊中之后以及撞到敵機或者被自殺敵機撞到之后的程序。
別看簡單,這里面有一個經驗技巧,就是這個等待0.1秒,因為兩個克隆體碰撞之后,應該都消失掉,但是程序執行不是完美同步的,所以當碰撞發生之時,兩邊的偵測命令并不是同步執行的,快的一邊已經把克隆體刪除掉了,另一邊也就偵測不到碰撞了,所以這個等0.1秒,就是讓快的一方晚一點刪除克隆體,確保對方也有時間偵測的這個碰撞事件。大家聽明白沒有?如果沒有可以自己試試不加這個命令的效果,看看bug出現在哪里。
聲明:本文章由網友投稿作為教育分享用途,如有侵權原作者可通過郵件及時和我們聯系刪除
