拖拉怪獸碰撞牆壁
這篇文章會介紹在 Scratch 裡使用廣播功能,讓怪獸與牆壁的角色互動,搭配重複無限次、偵測滑鼠按下、座標、移動、旋轉...等積木,實作用滑鼠拖拉怪獸,撞到牆壁時牆壁會晃動的互動效果。
角色設定
在角色編輯區,刪除貓咪角色,加入「怪獸 Frank」和「洞穴」兩個角色 ( 參考:Scratch 角色設定 )。
洞穴背景:圖片來源
調整怪獸和洞穴的位置,使其看起來就像怪獸位於洞穴裡的樣子 ( 洞穴圖片大小要大於舞台,晃動時才不會出現白邊 )。
積木程式原理
首先編輯「怪獸」角色,實作用滑鼠拖拉怪獸的效果:
- 放入點擊綠旗積木,點擊綠旗時,讓怪獸圖層移到最上層,並設定迴轉方式為「不設限」。
- 放入重複無限次積木,每次重複時,判斷滑鼠是否點擊怪獸角色 ( 碰到滑鼠和滑鼠按下同時發生 ),如果滑鼠正在點擊怪獸,將怪獸的位置移動到滑鼠的位置。
接著設計「往左拖拉時,怪獸會往左傾斜,往右拖拉時,怪獸會往右傾斜」的效果:
- 新增 x、x1 和 dx 變數,作為計算怪獸往左或往右移動使用。
- 在剛剛的「定位到鼠標位置」積木下方,將 x 設定為 x 座標。
- 將 dx 設定為 x - x1 ( 透過前後 x 座標計算是往右還是往左移動 )。
- 等待 0.001 秒,作為 x 和 x1 的時間差。
- 預設面朝 90 度 ( 如果 dx 為 0 )。
- 判斷如果 dx>0,表示怪獸往右移動,讓怪獸往右傾斜 ( 面朝 120 度 )。
- 判斷如果 dx<0,表示怪獸往左移動,讓怪獸往左傾斜 ( 面朝 60 度 )。
- 將 x1 設定為 x 座標。
完成後,切換到「專案頁面」( 檢視模式 ),用滑鼠拖拉怪獸,就能看到傾斜的效果。
為什麼要切換到專案頁面呢?因為在程式編輯頁面,舞台區的角色位置可以透過滑鼠移動 ( 編輯 ),因此無法模擬出正確的效果。
新增另外一個點擊綠旗積木,放入重複無限次積木,判斷滑鼠放開怪獸時,就讓怪獸滑行回 (0,0) 的舞台中心點。
再新增一個點擊綠旗積木,放入重複無限次積木,判斷怪獸碰到邊緣,且 dx 不等於 0 ( 表示怪獸傾斜,正在被拖拉 ),就發送廣播訊息 ( 讓洞穴角色接收 )。
怪獸角色完成後,接著編輯「洞穴」角色:
- 新增點擊綠旗積木,點擊綠旗時,讓洞穴定位到 (0,0)。
- 新增收到廣播訊息 message1 的積木。
- 收到訊息時,透過「重複 10 次」、「定位」、「隨機數」積木,讓洞穴晃動 10 次。
- 晃動結束後,定位到 (0,0)。
完成效果
完成後,回到「專案頁面」,點擊綠旗,拖拉怪獸撞到牆壁時,牆壁就會震動。
範例解答
範例解答:拖拉怪獸碰撞牆壁
意見回饋
如果有任何建議或問題,可傳送「意見表單」給我,謝謝~