iT邦幫忙

2021 iThome 鐵人賽

DAY 25
0
自我挑戰組

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

Day25 ( 高級 ) 放煙火 1 ( 往上發射 )

  • 分享至 

  • xImage
  •  

放煙火 1 ( 往上發射 )

教學原文參考:放煙火 1 ( 往上發射 )

這篇文章會介紹,如何在 Scratch 3 裡使用擴充功能的畫筆、變數、函式、重複...等積木,模擬出放煙火效果 ( 這篇文章會先介紹煙火往上發射的做法 )。

相關文章參考:畫筆變數函式重複

舞台背景設定

設定舞台背景為一張夜晚星空的圖片 ( 在太空的類別中 )。

Scratch 3 教學 - 放煙火 1 ( 往上發射 )

點擊「背景」,切換到「背景」頁籤,使用選取工具,全選星空的圖片,複製這張圖片 ( 提供新角色使用 )。

Scratch 3 教學 - 放煙火 1 ( 往上發射 )

角色設定

在角色編輯區,刪除貓咪角色,使用繪畫工具,新增一個名為「背景」的角色,切換到造型頁籤,將剛剛複製的圖片貼上,對齊畫布中心 ( 參考:造型與繪圖 )。

Scratch 3 教學 - 放煙火 1 ( 往上發射 )

再度使用繪畫工具,新增另外一個名為「煙火」的角色,切換到造型頁籤,使用「圓形」工具,在畫布中畫出一個「黃色小圓形」,對齊畫布正中心。

Scratch 3 教學 - 放煙火 1 ( 往上發射 )

煙火和背景的比例如下圖所示:

Scratch 3 教學 - 放煙火 1 ( 往上發射 )

積木程式原理 ( 背景 )

點擊「背景」角色,設定點擊綠旗時的動作:

  • 將圖層移到最下層。
  • 設定圖像效果幻影為 90 ( 接近透明 )。
  • 使用重複無限次積木,每次重複時進行蓋章動作

相關做法可以參考:仙女棒 ( 光跡效果 )

Scratch 3 教學 - 放煙火 1 ( 往上發射 )

積木程式原理 ( 煙火 )

點擊「煙火」角色,從左側積木清單新增 n1 和 y1 兩個變數。

  • 變數 n1:計算目前畫面上有幾個煙火分身。
  • 變數 y1:設定煙火往上發射的初速度。

Scratch 3 教學 - 放煙火 1 ( 往上發射 )

從左側積木清單新增一個名為「放煙火」的函式,增加 x 和 color 兩個參數

Scratch 3 教學 - 放煙火 1 ( 往上發射 )

編輯「放煙火」函式內容:

  • 設定顯示角色,將角色的圖像效果顏色設定為 color 參數數值。
  • 設定筆跡顏色為 color 參數數值,停筆。
  • 定位到舞台下方,水平隨機的位置。
  • *設定變數 y1 為 8~10 的隨機數 *( 讓每次發射速度都有可能不同)。
  • 下筆畫畫。
  • 使用「重複...直到」積木,直到 y 小於 -1 就停止重複,每次重複執行:
    • 將 y1 減少 0.2 ( 越來越慢,模擬地心引力 )
    • 根據指定的數值,將 x 和 y 做對應的移動改變
  • 重複結束後,隱藏角色。

Scratch 3 教學 - 放煙火 1 ( 往上發射 )

設定點擊綠旗的動作:

  • 將舞台上的筆跡全部清除,停筆。
  • 設定畫筆的寬度和顏色 ( 顏色使用和煙火同樣的黃色 )。
  • 設定煙火角色的亮度和幻影為 0 ( 表示使用預設值 )。
  • 設定變數 n1 為 0 ( 表示目前舞台上沒有煙火分身 )
  • 使重複無限次積木,每次重複執行:
    • 等待直到 n1 等於 0 再繼續 ( 如果舞台上有分身,就不要放煙火,直到分身都消失為止 )
    • 等待 0.2~1 秒再繼續,讓煙火施放時間不固定。
    • 執行放煙火函式,提供隨機數的參數數值。

Scratch 3 教學 - 放煙火 1 ( 往上發射 )

完成效果

完成後,點擊綠旗,就會看見煙火不斷的往上發射 ( 目前還不會爆炸,下一篇文章會介紹 )。

Scratch 3 教學 - 放煙火 1 ( 往上發射 )

範例解答

範例解答:放煙火 1 ( 往上發射 )

繼續閱讀

如果已經熟悉了放煙火 1 ( 往上發射 ),就可以繼續閱讀「放煙火 2 ( 爆炸效果 )」的文章。

文章連結:放煙火 2 ( 爆炸效果 )

關於我

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


上一篇
Day24 ( 高級 ) 駭客任務背景特效
下一篇
Day26 ( 高級 ) 放煙火 2 ( 爆炸效果 )
系列文
Scratch 3 從入門到精通46
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言