有一些同學私信我,前幾章節學會角色、舞臺和動畫,然後再加上第七章的觸碰,這些看上去挺簡單,但是普遍懷疑這些基礎知識的實用性,都想快速進入到編程環節裏面。
其實scratch編程不復雜,複雜的是各個基礎知識的組合運用。所以今天我就加一個篇外,看看之前學的基礎知識能做到哪個程度:
我們先看一段視頻:
看上去是不是有些商業大型遊戲的味道?
其實一點都不復雜,我們來剖析一下就會發現,原來基本都是用的碰撞和小動畫組合。
第一,我們先找好素材:
一共就這幾個素材,都是網上找的:
第二,進行組合和小動畫設計:
比如大型敵機的飛行狀態,就和上一張小汽車的運動一樣,就做了兩個造型的切換:
仔細看,就是螺旋槳的兩片葉子水平翻轉了一下,就可以營造出飛機飛行的樣子:
爆炸效果也是:
靈活使用圖片的造型的組合出小動畫,這些就是構成大型遊戲的基礎。
第三,設計整個遊戲的規則:
敵人小飛機出來發射子彈,玩家的飛機中彈或是撞上敵機就要爆炸,這就是用到“觸碰”。反之敵人中彈也要爆炸,大型機就觸碰幾次再爆炸。
這是遊戲的規則,設定好。
很簡單,右邊的短一點的代碼是檢查鍵盤上下左右按鈕來控制飛機移動,左邊代碼邊是飛行狀態切換和”觸碰”子彈、敵機、激光後爆炸的判斷。
下一個是背景,背景是有技巧的,關於怎麼做循環背景,這個要用一個比較詳細的章節來說,今天的遊戲就只用了一段代碼:
但是這個圖片選擇和角色製作是將一個可以循環的背景圖拷貝一份用拼接後再使用,注意看:
舞臺區其實顯示的只是背景圖片的下半部分,然後讓圖片往下移動,到上部分快要走完之前銜接到開始的位置,這樣就很難看出破綻來了。
我這個作品還沒有仔細調試,還是可以看出接縫來的:
背景上有條白線,就是兩個背景圖拼接的位置。
我們一般會把背景音樂放到背景代碼裏面去,因爲背景程序一般比較簡單好控制。
音樂模塊我們以後再講。
然後就是子彈代碼:
監測鍵盤空白鍵,如果按下,就啓動這段代碼。
也是很簡單,就是對擊中敵人進行“觸碰”判定。這裏要注意兩個知識點,一個是“克隆”,這個模塊就是讓你每按一下,就複製一次下面的代碼,這樣就能讓子彈連發了。另一個是出發位置的判定,在偵測模塊裏面有:
這個是得到目標座標的方法。
這樣我們按一下空白鍵,然後系統就檢測一下飛機的位置,然後讓子彈從飛機的位置開始向上移動:
移動到頂部之後,判斷一下子彈的座標,然後將其隱藏,這樣子彈就像是發射出去了看不到了:
自己的飛機好了,下一步是敵人的飛機:
敵機其實也一樣,但是多了幾個要思考的點:
首先敵機是隨機位置出現:
然後是隨機時間開炮:
發個消息出去告訴子彈準備要登場了。
敵機爆炸一次我們加一分,還有一箇中彈狀態,這裏會用到變量這個概念,這也是非常重要的一個概念,我們會用專門的章節來講變量。
其它也是位置判定,飛到底部就消失。
子彈收到廣播“準備開炮”之後,且敵機還未爆炸,那麼從敵機位置開始發射子彈,這裏應該會用到一個關於子彈射擊點和玩家飛機位置的一個直線運動算法,但是我們今天不搞那麼複雜,我們只用最簡單的做法——直接找到玩家飛機位置,然後子彈移動到這個位置即可:
然後還有一個敵人2號和敵機子彈2號,這是爲什麼呢?
本來可以用克隆,不過我們可以將2號造型更改爲其它飛機,就會讓遊戲內容更豐富,但是我這裏就不改了。
2號敵機代碼和1號都是一樣。參數可以自己調試。
然後是巨型機登場:
代碼也很簡單,也是我們學過的觸碰和移動的組合,然後加了一箇中彈量的累加判斷:
這段代碼就是巨型機中彈一次變量中彈數+1,當中彈數大於20的時候,巨型機就要爆炸,爆炸也是幾張圖的切換:
最後就是巨型機的激光武器:
代碼很簡單,在巨型機中彈3次後,開始隨機時間發激光。
然後遊戲只要加個開始和結束畫面就可以了,這裏我就不做了。
今天的展示主要是移動和觸碰的組合,雖然之前章節是基礎,但是我們如果掌握基礎,就能製作出優秀的作品。所以我們往後的基礎課還是得細細打磨。