Scratch&C#教材

第14週 橫向卷軸冒險遊戲製作

橫向卷軸冒險遊戲製作

第14週

橫向卷軸冒險遊戲概念

市面上有許多橫向卷軸類型的冒險遊戲
這類遊戲的最大特色
就是有橫向延伸的廣大地圖
另外分數紀錄、生命值與闖關元素等
也是冒險遊戲的精髓

最為人知的就是任天堂的「超級瑪莉」

這次要使用Scratch製作類似超級瑪莉的遊戲,主要元素包含:

網路資源

使用「Game Art 2D」提供的免費素材來進行製作

下載角色動作、地圖背景等資源

玩家製作

上傳下載的角色圖

選擇一個造型上傳

匯入角色其他動作到造型
需要「Idle」等待、「Jump」跳躍、「fall」掉落、「Run」移動
由於Scratch較難整理大量動作分鏡
固每個動作取幀上傳不超過五張即可

玩家事件初始設定

建立變數「status」判斷玩家狀態播放動畫

並再增加一個事件來判斷玩家什麼狀態該播放什麼動畫

要製作角色動畫播放就得知道角色的造型編號
例如「idle」等待動作的造型編號在1~5
這樣編排就可以讓動畫持續輪播

每一個動畫都這樣做太麻煩了
所以定義函式積木可以簡化程式

動畫的部分完成了,接著是動作的部分
先匯入一個做為地面的物件

將掉落判定放在初始化事件下面
當玩家碰到地面時設為「idle」
沒碰到方塊表示在空中,設為「fall」

由於橫向卷軸的特性
玩家的左右移動不依靠而是由整張地圖移動
設定變數「p_x」做為玩家X座標紀錄
則本作的Y座標就不做卷軸式移動了

 

掉落的時候仍可以左右移動
但並不會切換到走路動畫
所以要分開製作

跳躍的動作如果製作在與移動同一個事件中
將會產生非同步的問題
所以跳躍動作要廣播事件
只能在著陸的時候跳躍
並暫時阻擋「fall」動作

在廣播事件中執行跳躍動作
在跳躍完畢後接著是切回「fall」

地圖製作

由於Scratch的視窗限制,實現卷軸地圖頗有難度
本章節將設計一個平行的地板
上面生成陷阱及獎勵道具

地板由分身建置,本體可以縮放至指定大小後隱藏

為地板建立一個紀錄X座標的變數「g_x」
要勾選「僅適用當前角色」
這樣每一個分身都能獨立使用該變數

建置地板程式
可以定義函式減少程式

利用分身產生剛才生成的地板

陷阱製作

地面上這一層就得開始設置獎勵道具及陷阱
建立變數「t_x」來存放X座標

地板的範圍從-192~2304
所以陷阱也應該生成在這中間
在「Trap」程式區編寫隨機從128~358開始生成5個陷阱

若測試時跳不過陷阱可以增加玩家每步移動的距離

陷阱屬於障礙物,是不能穿過的
碰到時也會損失生命值
建立變數「生命值」

到玩家程式區設定生命值初始值
在移動的地方增加碰撞判斷

另開事件來設定生命值歸零時停止遊戲或角色操作

獎勵道具製作

建立變數「分數」
獲得獎勵時就會增加
並建立一個變數「r_x」存放獎勵的X座標

在「Reward」程式區裡,與陷阱一樣隨機生成
生成10個獎勵道具

在玩家程式區設置分數初始值
碰到獎勵時獎勵會消失並且增加分數
需要由獎勵道具觸發
在「Reward」程式區分身事件裡建置

確認玩家碰到獎勵會增加分數並刪除分身

完成過關製作

過關的條件是收集所有獎勵道具(分數10分)
並且生命值大於0,碰到終點的過關牌子
定義變數「f_x」存放牌子的X座標
非必要「僅適用當前角色」,因為過關牌子不需要製作分身

將過關牌子放置在關卡終點2304

在「Finish」程式區完成碰到玩家時的程序

收集完獎勵與沒收集完的對話框

增加音效

增加音效可以讓遊戲的氣氛更加活潑
可以使用內建的音效或自己上傳
音效區增加讓玩家踩踏發出的音效

在「Ground」程式區建立新的分身事件
當玩家接觸到的時候就會發出一次聲音
直到再次接觸

音效區增加接觸到玩家的聲音

在「Trap」程式區建立新的分身事件

則「Reward」在碰撞偵測事件下增加

試著在各項事件下都增加合適音效
「播放音效()直到結束」會造成事件不同步
所以需要建立新的事件程序

發表迴響

%d 位部落客按了讚: