教學原文參考:反彈球 ( 乒乓球 )
這篇文章會介紹,如何在 Scratch 3 裡使用定位、偵測碰到、反彈、數學計算、重複...等積木,實作一個反彈球 ( 類似乒乓球 ) 的小遊戲,並且更進一步做到板子以不同速度碰撞到乒乓球時,會改變乒乓球的移動軌跡和角度。
在角色編輯區,刪除貓咪角色,使用繪畫,繪製球、板子和地板三個新角色 ( 參考:造型與繪圖 )。
下圖是三個造型在舞台上排列的大小示意,地板佔滿整個舞台底部 ( 因為到時候如果球碰到地板,表示扣分或遊戲結束 )。
點擊「球」角色,先編輯讓球「碰到邊緣就反彈」的程式:
完成後點擊綠旗,就能看到球在舞台中移動,撞到邊緣會反彈。
接著理解「球碰板子反彈」的原理:
按照反彈原理,編輯球碰到板子的程式:
完成後,就能看到球碰到板子反彈。
由於球是以每次移動「 10 點」為單位進行移動,所以某些情況下,會發生「超過板子」的奇怪狀況。
為了避免這種狀況,可以建立一個「反彈修正」的函式處理,點選左側清單「函式積木」,建立一個函式,命名為「反彈修正」,勾選「執行完畢再更新畫面」。
注意,一定要勾選「執行完畢再更新畫面」,這個功能可以讓函式內不需要等待的程式快速執行,加快畫面運行速度。
「反彈修正」函式的內容,放入一個「重複...直到」積木,每次重複將球的 y 增加 1,直到沒有碰到板子為止 (碰到板子不成立 ),接著在原本的程式中「如果碰到板子」的積木裡,執行「反彈修正」的函式。
最後加入「如果...那麼...否則」積木,判斷如果碰到地板,就說出「你已經死了」,否則 ( 如果沒碰到地板 ),就執行球的移動與碰撞程式。
編輯「板子」角色的程式,讓板子可以跟隨滑鼠移動:
雖然做到這個步驟,程式已經全部完成,但球只會以「單一角度」反彈或移動,因此可以替板子角色加入「速度」變數,由板子的移動快慢,進一步控制球的反彈角度。
首先新增兩個變數:
修改板子的跟隨滑鼠移動的程式,每次重複執行:
此處的速度 v 表示 0.001 秒內滑鼠移動的「距離」,0.001 秒內移動距離越大,速度越快。
最後,點擊「球」的角色,將變數 v 加入角度的計算裡。
完成後,點擊綠旗,就能開始進行反彈球的遊戲,當板子移動速度越快,就越能改變球的反彈角度。
範例解答:反彈球 ( 乒乓球 )
如果已經熟悉了反彈球 ( 乒乓球 )的原理,還可以嘗試更多好玩的作法:
大家好,我是 OXXO,是個即將邁入中年的斜槓青年,如果對我有點興趣(笑,可以與我聯繫,一起來做點有玩又有創意的東西吧!