彈跳的籃球
這篇文章會介紹,如何在 Scratch 裡使用變數、重複無限次、邏輯判斷、碰撞邊緣、位置改變...等積木,實作籃球自由落體,碰撞到地面彈跳的效果。
角色設定
在角色編輯區,刪除貓咪角色,加入「籃球」角色 ( 參考:Scratch 角色設定 )。
積木程式原理
首先實作「自由落體」的加速度程式,先放入兩個變數,一個叫做「移動距離」( 預設 0 ),一個叫做「加速度」(預設 -1 ),接著使用重複無限次積木,移動距離根據加速度而不斷改變,籃球的 y 座標根據移動距離不斷改變。
透過標準的加速度距離公式 ( S = V0t + ½gt² )可以知道「籃球每單位時間內移動的距離會越來越長」,所以積木是透過比較簡單的方式呈現。
點擊綠旗,就能看到籃球以「等加速度」的方式落下。( 下圖表現等加速度和等速度的差異 )
在舞台區,用滑鼠將籃球移動到底部,紀錄籃球貼近底部的 y 座標。( 範例是 -158 )
修改程式,加入「碰到邊緣」的邏輯判斷,判斷如果碰到邊緣,就讓移動距離乘以 -0.8,這樣就能反轉 y 方向的移動並模擬越跳越矮的效果,同時為了避免超過範圍,額外設定 y 為 -158,如果沒有碰到邊緣,就按照正常的等加速度移動。
因為移動距離是乘以小數點,所以在接近邊緣時可能會有一些細微的跳動,如果要修正這些跳動,可以加入移動距離的判斷,判斷如果太小的移動距離 ( 表示籃球快要跳不起來了 ),就直接讓移動距離歸零。
完成效果
點擊綠旗執行後,就會看到籃球自由落下,不斷反彈後停止在地上。
範例解答
範例解答:彈跳的籃球
延伸練習
如果已經熟悉了彈跳的籃球的原理,還可以嘗試更多好玩的作法:
意見回饋
如果有任何建議或問題,可傳送「意見表單」給我,謝謝~