[Scratch] 製作類似橫捲軸遊戲 – 骷髏大逃殺

[Scratch] 製作類似橫捲軸遊戲 – 骷髏大逃殺

前幾天用 Scratch 做了一個 打擊蝙蝠 Strike the Bats 遊戲

今天再接再厲,想來做一個橫軸捲動的遊戲~

不過查了一下,原本 Scratch 2.0 好像就有想要支援橫軸捲動,

但到了 Scratch 3.0 都還沒看到 (或是我不知道怎麼用?!)…

 

網友們用的方法,比較常見的似乎是把背景做成角色 (Sprite),

然後移動這些背景角色,製造出畫面在捲動的效果~

本來我想做一個賽車遊戲,公路旁要有椰子樹之類的不斷重覆,

後來想想有點麻煩,就還是先做一個簡化版本的吧~

 

1. 製作公路背景

我是自己製作一個舞台背景,

把整面都用灰色塗滿 (代表柏油路),

上下兩邊畫上白線 (代表車道邊線):

 

2. 製作公路上會捲動的短黃線

這邊我建立一個角色 (Sprite),自己畫一條短黃線:

 

我希望用程式製造出重覆的短黃線,

然後隨著時間移動,移動這些短黃線,

就可以製造出路面捲動的效果~

 

因此,當程式開始後,

我用兩層的 For 迴圈 (repeat),移動短黃線到路面的左上角,

產生分身 (clone),再往下一個位置移動去產生下一個分身:

 

當短黃線的分身產生之後,

就讓它隨著時間往左邊移動,製造出路面往左移 (車子像往右移) 的感覺。

但如果短黃線已經從左邊離開畫面了,就讓它重新出現在畫面的最右邊:

 

上述的處理就可以產生兩排的短黃線,隨著時間不停的往左邊移動~

但這邊要注意的是,我是讓分身在產生之後就顯示出來、並開始移動,

因為每個短黃線分身被製造出來的時間不會完全一樣,

因此第一排線和第二排線的短黃線是不會對齊的。

想要對齊的話,也許是要將所有分身都產生出來後,

再廣播訊息讓所有分身一起動作~

 

3.  向左移動中的骷髏怪物

我在舞台 (Stage) 這邊,如果接收到遊戲開始的訊息,

就廣播一個 CreateEnemy 的訊息:

 

骷髏角色接收到這個 CreateEnemy 的訊息後,

就會隨機等待一段時間後,製造出一個自己的分身出來:

 

當骷髏分身出現之後,讓它出現在畫面右邊任意位置,

再隨著時間向左移動,看起來就像因為車子向前,所以骷髏接近了~

移動過程中切換骷髏的外型 (costume),讓它看起來有在動的感覺:

 

因為骷髏逐漸靠近車子,自然就會有碰撞到的可能。

因此也會偵測是否已經和車子接觸,

是的話就廣播一個 Crash 訊息,好讓爆炸那個角色顯示出來~

 

4.  產生爆炸效果

爆炸效果基本上也是一個角色,

理論上應該是去網路上找一個爆炸的圖示,

不過我太懶了,就直接用 Scratch 內建的太陽來代表 Orz…

 

當這角色接收到 Crash 訊息時,

就會顯示出來,並且將自己逐漸變大,

呈現出爆炸擴散的效果:

 

5. 移動車子閃避怪物

當車子接收到方向鍵按下的訊息時,

就調整對應的 x 或 y 值,就可以讓車子上下左右移動~

 

移動之後有可能會撞到邊線,

但若上下左右方向鍵都放檢查邊線的程式,

就會有很多重覆的程式碼…

因此這邊用到了 My Blocks > Make a Block 的功能,

Make a Block 可以做出可重覆使用的函式 (function),

我們可以在車子移動位置後,執行自定義的 CheckEdge 函式作檢查:

 

CheckEdge 函式在做什麼呢?

它檢查車子是否接觸到邊緣,是的話表示撞毀了,

發送出一個 Crash 的訊息,

這訊息就會讓爆炸角色接收到,產生出爆炸效果:

 

車子在行進過程中,如果都不會動的話,看起來比較生硬一點。

因此我讓它持續順/逆時鐘晃動個兩度,稍微有點動感:

 

最終完成的版本就在 骷髏大逃殺 (Escape from the Skeletons) 這邊,

玩家可以用方向鍵移動車子,來閃避隨機出現的骷髏怪物:

 

閃不過的話,就會出現爆炸效果:

 

這個遊戲裡有作出一個很簡單的捲動效果,

但離真正的橫捲軸遊戲 (不同的背景) 應該還有蠻大的距離,

之後再來研究看看囉~

(本頁面已被瀏覽過 265 次)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料