iT邦幫忙

2021 iThome 鐵人賽

0
自我挑戰組

Scratch 3 從入門到精通系列 第 40

Day40 ( 遊戲設計 ) 反彈球 ( 乒乓球 )

  • 分享至 

  • xImage
  •  

反彈球 ( 乒乓球 )

教學原文參考:反彈球 ( 乒乓球 )

這篇文章會介紹,如何在 Scratch 3 裡使用定位、偵測碰到、反彈、數學計算、重複...等積木,實作一個反彈球 ( 類似乒乓球 ) 的小遊戲,並且更進一步做到板子以不同速度碰撞到乒乓球時,會改變乒乓球的移動軌跡和角度。

相關文章參考:定位偵測碰到重複反彈數學計算

角色設定

在角色編輯區,刪除貓咪角色,使用繪畫,繪製球、板子和地板三個新角色 ( 參考:造型與繪圖 )。

Scratch 3 教學 - 反彈球 ( 乒乓球 )

下圖是三個造型在舞台上排列的大小示意,地板佔滿整個舞台底部 ( 因為到時候如果球碰到地板,表示扣分或遊戲結束 )。

Scratch 3 教學 - 反彈球 ( 乒乓球 )

積木程式原理 ( 球 )

點擊「球」角色,先編輯讓球「碰到邊緣就反彈」的程式:

  • 放入當綠旗被點擊積木。
  • 點擊綠旗時,將球面朝 135 度,定位在舞台中間正上方 ( 0, 150 )。
  • 使用重複無限次積木,每次重複時「撞到邊緣就反彈」,並且移動 10 點。

Scratch 3 教學 - 反彈球 ( 乒乓球 )

完成後點擊綠旗,就能看到球在舞台中移動,撞到邊緣會反彈。

Scratch 3 教學 - 反彈球 ( 乒乓球 )

接著理解「球碰板子反彈」的原理:

  • 球的入射角大於 0 ( 從左上往右下移動 ),反射角等於「180 - 入射角」。
  • 球的入射角小於 0 ( 從右上往左下移動 ),反射角等於「( 180 + 入射角 ) x -1」。

Scratch 3 教學 - 反彈球 ( 乒乓球 )

按照反彈原理,編輯球碰到板子的程式:

  • 放入「如果...那麼」積木,判斷當球碰到板子角色。
  • 接著放入「如果...那麼...否則」積木。
    • 如果「方向 > 0」( 入射角 > 0 ) 時,面朝 ( 反射角 )「180 - 方向」度
    • 否則 ( 方向 <= 0 )時,面朝「( 180 + 方向) x -1」度

Scratch 3 教學 - 反彈球 ( 乒乓球 )

完成後,就能看到球碰到板子反彈。

Scratch 3 教學 - 反彈球 ( 乒乓球 )

由於球是以每次移動「 10 點」為單位進行移動,所以某些情況下,會發生「超過板子」的奇怪狀況。

Scratch 3 教學 - 反彈球 ( 乒乓球 )

為了避免這種狀況,可以建立一個「反彈修正」的函式處理,點選左側清單「函式積木」,建立一個函式,命名為「反彈修正」,勾選「執行完畢再更新畫面」。

注意,一定要勾選「執行完畢再更新畫面」,這個功能可以讓函式內不需要等待的程式快速執行,加快畫面運行速度。

Scratch 3 教學 - 反彈球 ( 乒乓球 )

「反彈修正」函式的內容,放入一個「重複...直到」積木,每次重複將球的 y 增加 1,直到沒有碰到板子為止 (碰到板子不成立 ),接著在原本的程式中「如果碰到板子」的積木裡,執行「反彈修正」的函式。

Scratch 3 教學 - 反彈球 ( 乒乓球 )

最後加入「如果...那麼...否則」積木,判斷如果碰到地板,就說出「你已經死了」,否則 ( 如果沒碰到地板 ),就執行球的移動與碰撞程式。

Scratch 3 教學 - 反彈球 ( 乒乓球 )

積木程式原理 ( 板子 )

編輯「板子」角色的程式,讓板子可以跟隨滑鼠移動:

  • 放入當綠旗被點擊積木。
  • 點擊綠旗時,執行重複無限次積木。
  • 每次重複時,將板子的 x 座標定位到滑鼠的 x 座標。

Scratch 3 教學 - 反彈球 ( 乒乓球 )

雖然做到這個步驟,程式已經全部完成,但球只會以「單一角度」反彈或移動,因此可以替板子角色加入「速度」變數,由板子的移動快慢,進一步控制球的反彈角度

首先新增兩個變數:

  • ax:0.001 秒之前板子的 x 座標。
  • v:板子的移動速度。

Scratch 3 教學 - 反彈球 ( 乒乓球 )

修改板子的跟隨滑鼠移動的程式,每次重複執行:

  • 設定變數 ax 為板子的 x 座標。
  • 等待 0.001 秒
  • 將板子定位到新的滑鼠座標。
  • 設定變數 v 為「新的 x 座標 - ax」。

此處的速度 v 表示 0.001 秒內滑鼠移動的「距離」,0.001 秒內移動距離越大,速度越快

Scratch 3 教學 - 反彈球 ( 乒乓球 )

最後,點擊「球」的角色,將變數 v 加入角度的計算裡。

Scratch 3 教學 - 反彈球 ( 乒乓球 )

完成效果

完成後,點擊綠旗,就能開始進行反彈球的遊戲,當板子移動速度越快,就越能改變球的反彈角度。

Scratch 3 教學 - 反彈球 ( 乒乓球 )

範例解答

範例解答:反彈球 ( 乒乓球 )

延伸練習

如果已經熟悉了反彈球 ( 乒乓球 )的原理,還可以嘗試更多好玩的作法:

  • 加入「反彈的次數」作為得分。( 解答 )
  • 讓球每次反彈後,移動速度「越來越快」。( 解答 )

關於我

大家好,我是 OXXO,是個即將邁入中年的斜槓青年,如果對我有點興趣(笑,可以與我聯繫,一起來做點有玩又有創意的東西吧!


上一篇
Day39 ( 遊戲設計 ) 青蛙過河
下一篇
Day41 ( 遊戲設計 ) 翻翻卡 ( 卡牌記憶 )
系列文
Scratch 3 從入門到精通46
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言