作為長年混跡在瑪利歐系列遊戲中的老玩家,我一直覺得最浪漫的事,不是去挑戰 超級瑪利歐最快破關 4 分 56 秒紀錄 那種極致的競技,而是能夠用自己的雙手,在數位世界裡重塑出那些經典的遊戲機制。

隨著時間推移,到了 2026 年現在,很多新手或想要學習程式邏輯的朋友,往往會問我:「如果我想動手做一個簡單的瑪利歐風格平台跳躍遊戲,從哪裡開始比較不會卡關?」我的建議永遠是:Scratch。這不是什麼入門玩具,它能讓你把複雜的物理碰撞、地圖捲動與角色狀態判斷,轉化為視覺化的積木邏輯。

今天這篇文章,我不打算只教你怎麼畫出瑪利歐的造型(雖然漂亮的皮套很重要),我們要聊的是「遊戲核心機制」。如果你想用 Scratch 做出一個能動、好玩的橫向捲動平台跳躍作品,這幾個關鍵技術點是你必須掌握的硬實力。

第一關:基礎移動與慣性系統

用 Scratch 3.0 從零實作超級瑪利歐:從磚塊碰撞到地圖滾動的開發心法 操作畫面 1
很多新手在做瑪利歐類遊戲時,常會犯一個錯誤:讓角色移動變得太過「精確」。如果按右鍵就往右走、按左鍵就往左走,那這只是單純的位移,而不是「動作感」。

經典瑪利歐之所以好玩,是因為它有一點點慣性(Inertia)。當你按下加速時,角色的速度是漸進增加的;而當你放開按鍵時,角色並不會瞬間停住,而是會滑動一段距離才減速到零。在 Scratch 裡實作這個邏輯,建議使用一個「速度」變數:

  1. 設定一個名為「X速度」的變數。
  2. 當按下右鍵時,將「X速度」增加(例如 +1)。
  3. 當按左鍵時,將「X速度」減少(例如 -1)。
  4. 每一幀,讓角色座標移動 X速度
  5. 加入摩擦力:在每秒執行的迴圈中,不斷讓「X速度」乘以一個極小的數字(例如 0.9),這能讓動作變得滑順且有厚度。

第二關:核心痛點,碰撞偵測(Collision Detection)

用 Scratch 3.0 從零實作超級瑪利歐:從磚塊碰撞到地圖滾動的開發心法 操作畫面 2
這是大多數人會卡關的地方。當你的角色碰到磚塊或是地板時,系統怎麼判斷「你現在是在地上」還是「你正撞到牆壁」?

在 Scratch 中處理這類問題,最穩定的方法是「高度偵測法」。當角色跳躍或掉落時,程式會不斷檢查角色底部的座標點是否與上方物件重疊。如果檢測到地面的邊緣,就會判定為落地並停止掉壓速度。

如果你在製作過程中發現角色卡在牆壁裡或發生穿透現象,這通常是因為檢測邏輯不夠嚴密。這裡的技巧是:當偵測到碰撞時,立即將角色的 Y 座標修正回到碰撞點上方的固定距離。這個細節決定了遊戲的流暢度是否會像經典作品一樣紮實。

第三關:地圖捲動與分層(Scrolling Map)

用 Scratch 3.0 從零實作超級瑪利歐:從磚塊碰撞到地圖滾動的開發心法 操作畫面 3
如果你希望玩家不是在跑動「角色」,而是讓世界在背景中滾動,那你就要學會「分層」。

簡單的做法是將場景分成多個大塊的背景圖。當角色的 X 位置超過一定數值時,啟動捲動邏輯。這能確保你在設計一個超長關卡時,不會因為物件數量過多而導致 Scratch 運算變慢。

如果你剛開始練習,可以先從「固定地圖」做起,專心打磨跳躍手感。一旦你的跳躍高度、重力加速度比例調校到完美了,再去挑戰捲動系統也不遲。