Scratch 物理模擬遊戲教學:用積木做出重力、彈跳和碰撞偵測
很多小朋友玩 Scratch 都是做簡單的動畫或追逐遊戲,但你知道嗎?Scratch 其實可以模擬真實世界的物理現象!重力、彈跳、碰撞——這些看起來很難的東西,用 Scratch 的積木就能做出來。
這篇教學會帶你一步一步做出物理模擬效果。完成之後,你不只學會了更進階的程式邏輯,還會對自然科學中的力學有更直覺的理解。
為什麼要在 Scratch 做物理模擬?
物理模擬就是讓東西的移動方式「看起來很真實」。為什麼 Super Mario 跳起來感覺那麼好?因為它模擬了重力加速度。在 Scratch 裡做物理模擬有三個好處:學程式(用到變數、條件判斷、座標系統)、學科學(直覺理解重力、加速度、摩擦力)、做遊戲(學會的技巧可以直接用在自己的遊戲裡)。
只要會基本的 Scratch 操作就可以跟著做。如果是完全新手,建議先看Scratch 接球遊戲教學打個基礎。
第一課:重力掉落
真實世界中,東西往下掉的速度會越來越快。在 Scratch 裡用一個變數來模擬:
當綠旗被點擊
移到 x: 0 y: 150
變數 [y速度] 設為 [0]
重複無限次
變數 [y速度] 改變 [-1]
y 改變 (y速度)
結束按下綠旗,球從上面掉下來,而且越掉越快!那個「-1」就是「重力值」。試試改成 -0.5(像月球)或 -2(像超重的星球)。
第二課:彈跳效果
彈跳原理:碰到地面時,把 y速度 反轉,但每次反彈損失一些能量。
如果 <y 座標 < [-150]> 那麼
y 設為 [-150]
變數 [y速度] 設為 ((y速度) * [-0.8])
結束關鍵是 y速度 * -0.8:-1 反轉方向,0.8 代表能量損失(每次只有 80% 高度)。改成 1.0 就永遠不停,0.5 很快停下來,0 完全不彈。
第三課:摩擦力與空氣阻力
加上水平移動和摩擦力讓球慢慢停下來:
// 鍵盤控制水平速度
如果 <按下 [右鍵]> 那麼
變數 [x速度] 改變 [0.5]
結束
// 摩擦力:每幀速度 × 0.95
變數 [x速度] 設為 ((x速度) * [0.95])
x 改變 (x速度)0.95 是摩擦力——每幀水平速度減少 5%。改成 0.99 很滑(冰面),0.8 很黏(泥巴地)。這在遊戲設計裡叫做「手感調整」。
第四課:碰撞偵測
用 Scratch 內建的「碰到」積木:
如果 <碰到 [牆壁]> 那麼
變數 [x速度] 設為 ((x速度) * [-1])
結束
如果 <碰到 [彈簧]> 那麼
變數 [y速度] 設為 [15]
結束碰到牆壁就反彈、碰到彈簧就彈高高、碰到岩漿就重新開始。
實戰專案:跳躍平台遊戲
把前面學到的技巧組合起來!你需要:一個玩家角色、幾個平台、重力系統 + 彈跳 + 左右移動。跳躍的關鍵:只有「站在平台上」時才能跳。
想做更完整的遊戲,參考Scratch 迷宮遊戲教學和Scratch RPG 冒險遊戲教學。進階挑戰可以做簡易版 Angry Birds(拋物線 + 碰撞)!
物理模擬 × 自然科學:牛頓第一定律(沒有摩擦力球一直滑)、牛頓第二定律(重力值越大加速越快)、能量守恆(球彈起高度越來越低)。Scratch 結合 AI 應用越來越多,看看 Scratch × Teachable Machine 機器學習教學。
結語:從玩中學的最佳範例
物理模擬遊戲是 Scratch 中最能展現「程式 + 科學」結合的類型。而且你今天學到的變數、每幀更新、碰撞偵測,都是真正遊戲引擎(Unity、Unreal)在用的核心邏輯。你不只在學 Scratch,你是在為未來學習更強大的工具打基礎。繼續創作吧!
繼續閱讀
Scratch 音樂節奏遊戲教學:帶孩子用程式做出自己的節拍遊戲
相關文章
你可能也喜歡
探索其他領域的精選好文