搜尋

控制所有分身的方法

只要熟悉全域變數和區域變數,就可以輕鬆控制指定的分身,但要如何才能更方便的控制「全部分身」呢?這篇教學會介紹 Scratch 裡可以控制所有分身的幾種方法。

相關文章參考:全域變數、區域變數控制指定分身 ( 使用區域變數 )

控制所有分身的方法:

當分身產生時

將分身的控制程式寫在「當分身產生時」的區塊裡,是 Scratch 大部分程式常見的做法 ( 網站中大多數範例也都是這樣做 ),以下方的程式碼為例,執行後,當滑鼠移動時,所有的分身都會面朝滑鼠的方向。

Scratch 教學 - 控制所有分身的方法 - 兩個全域變數

Scratch 教學 - 控制所有分身的方法 - 兩個全域變數

由於透過重複迴圈產生分身,Scratch 會有內建 0.03 秒的時間差 ( 保護避免當機 ),如果要讓分身全部同時出現,可以建立「執行完畢再更新畫面」的函式來產生分身。

Scratch 教學 - 控制所有分身的方法 - 執行完畢再更新畫面

使用產生分身函式,運用同樣的原理,就能讓每一個分身「同時」進行顏色的變換,如果沒有使用函式,會看到不同分身之間會有些微的時間差,造成顏色無法同步。

Scratch 教學 - 控制所有分身的方法 - 讓每一個分身同時進行顏色的變換

Scratch 教學 - 控制所有分身的方法 - 讓每一個分身同時進行顏色的變換

當角色被點擊

有兩種方式可以設計「點擊分身」的程式,第一種作法是在產生分身後,使用重複迴圈搭配等待,就能實現點擊分身的效果,下方程式執行後,點擊分身時分身會旋轉。

Scratch 教學 - 控制所有分身的方法 - 產生分身後,使用重複迴圈搭配等待

第二種作法直接使用「當角色被點擊」的積木,這塊積木點擊的角色範圍,涵蓋了「本尊」與「分身」,因此只需要放置一塊積木,就會將程式套用到每個分身。

Scratch 教學 - 控制所有分身的方法 - 直接使用「當角色被點擊」的積木

完成後執行程式,不論是哪種作法,只要點擊不同的分身,該分身就會旋轉。

Scratch 教學 - 控制所有分身的方法 - 點擊分身時分身會旋轉

收到廣播訊息

通常在操作廣播訊息積木時,都是針對角色的「本尊」,但廣播訊號原理會將訊號發送給「舞台上所有的物件」,分身也同時會收到廣播訊號,運用這個原理,以下圖的程式碼為例,當時個分身產生完成後,廣播 go 訊號,接著設定收到 go 訊號時開始變色。

Scratch 教學 - 控制所有分身的方法 - 廣播訊號原理會將訊號發送給「舞台上所有的物件」

程式執行後,分身會「陸續產生」,當分身全部產生完成後,才會一起開始變色。

Scratch 教學 - 控制所有分身的方法 - 當分身全部產生完成後,才會一起開始變色

運用廣播的原理,以下圖為例,當分身產生後,讓本尊重複無限次發送廣播訊號的程式,接著設定只要收到廣播訊號,就讓角色 ( 本尊與分身 ) 都面朝滑鼠,就能實現滑鼠移動時,角色隨之旋轉的效果。

Scratch 教學 - 控制所有分身的方法 - 讓本尊重複無限次發送廣播訊號的程式

Scratch 教學 - 控制所有分身的方法 - 兩個全域變數

當背景換成

「當背景換成」積木的原理跟廣播積木類似,會在背景替換時發送訊號,首先設定舞台有兩個背景。

Scratch 教學 - 控制所有分身的方法 - 在背景替換時發送訊號

設定舞台每隔一秒切換背景。

Scratch 教學 - 控制所有分身的方法 - 設定舞台每隔一秒切換背景

切換回角色的程式,設定背景換成特定名稱時,執行對應的程式。

Scratch 教學 - 控制所有分身的方法 - 設定背景換成特定名稱時,執行對應的程式

完成後執行程式,就會發現背景變換時,所有的分身也會跟著改變顏色。

Scratch 教學 - 控制所有分身的方法 - 背景變換時,所有的分身也會跟著改變顏色

當聲音響度大於

「聲音響度大於」積木的原理跟廣播積木類似,會在麥克風音量大於指定數值時發送訊號,下圖的程式碼執行後,會在音量大於 10 的時候,改變所有分身的尺寸。

Scratch 教學 - 控制所有分身的方法 - 在麥克風音量大於指定數值時發送訊號

小結

「分身」雖然名為「分身」,實際上也屬於舞台裡「元件」的一份子,只要是舞台中的元件,都可以透過廣播、點擊、背景變換或聲音響度來進行控制,至於哪種控制方法比較適合?就看程式專案的需求來決定要用哪種作法~

意見回饋

如果有任何建議或問題,可傳送「意見表單」給我,謝謝~

Scratch 教學

基本介紹

關於 Scratch 使用 Scratch 3 註冊與登入 操作介面 我的東西

圖形與聲音

繪製造型&背景 編輯音效

程式積木

積木種類 動作 外觀 音效 事件 控制 偵測 運算 變數 清單 函式積木

擴充功能

音樂 畫筆 視訊偵測 文字轉語音 翻譯

技巧&觀念

全域變數、區域變數 深入理解區域變數 控制指定分身 控制所有分身的方法 雲端變數 雲端變數記錄文字 變數串接文字 判斷英文字母大小寫 中斷與停止程式 廣播訊息並等待 鍵盤與滑鼠 滑鼠點擊與長按 點擊隱藏的角色 突破角色尺寸限制 角色與舞台邊界 重複積木的等待時間 音樂暫停與繼續播放 使用造型名稱建立清單 使用造型代替變數 文字轉清單 清單合併為文字 判斷兩個清單是否相同 複製清單、反轉清單 清單數字排序 清單最大值最小值

入門範例

鍵盤控制貓咪 指向中間的箭頭 水果音樂鋼琴 貓咪的影分身之術 貓咪的細胞分裂 螃蟹跑來跑去 吃水果 摸蝴蝶 小狗追棒球 魚兒水中游 小鳥往前飛 舞棍阿伯 小時鐘 搖骰子 轉動的眼球 抽獎輪盤 大樂透電腦選號 卡牌抽籤 ( 20 中 1 ) 移動到邊緣切換場景 人物依序跳舞 ( 廣播 ) 按鈕控制貓咪 ( 廣播 )

進階範例

貓咪跑步 ( 連續背景 ) 貓咪跑步 ( 超長背景 ) 大型數字 ( 圖形數字 ) 拖拉怪獸碰撞牆壁 鍵盤鋼琴 ( 記錄音符 ) 中文字逐字稿 英文字逐字稿 計算機 1 ( 顯示數字 ) 計算機 2 ( 加減乘除 ) 雲端聊天室 音樂播放器 推貓咪 ( 視訊偵測 ) 圍捕小魚 ( 視訊偵測 ) 戳泡泡 ( 視訊偵測 )

視覺特效範例

視差效果 水中吐泡泡 雪花隨風飄 鍵盤鋼琴 ( 音符動畫 ) 無限循環畫中畫 水底探照燈 狙擊望遠鏡 ( 兩倍變焦 ) 貓咪萬花筒 仙女棒 ( 光跡效果 ) 駭客任務背景特效 放煙火 1 ( 往上發射 ) 放煙火 2 ( 爆炸效果 )

繪圖範例

鏡射畫圖 ( 對稱圖形 ) 小畫家 ( 舞台上畫圖 ) 記錄畫圖軌跡 繪製圓形 繪製橢圓形 繪製立方體 ( 會動 ) 繪製正多邊形 繪製正多角星形 ( 單純 ) 繪製正多角星形 ( 多線 ) 繪製拋物線 繪製折線圖 繪製圓餅圖 繪製圓餅圖 ( 指示線 ) 蜘蛛結網 ( 八邊形網 ) 繪製舞台方格 繪製正弦波形 ( sin ) 正弦波毛毛蟲動畫 顯示聲波圖形

物理&模擬範例

鐘擺運動 簡單磁鐵效果 兩個磁鐵的磁力線 立體空間 ( 三度空間 ) 循跡移動 拋物線發射炮彈 地球繞著太陽轉 彈跳的籃球 電風扇 ( 控制強度 ) 拉不走的彈力球 慣性移動 ( 滑鼠 ) 慣性移動 ( 鍵盤 )

入門遊戲範例

猴子接香蕉 打地鼠 打地鼠 ( 體感視訊偵測 ) 刮刮樂 吹風機吹頭髮 太空狗閃躲隕石 九九乘法測驗 英文單字測驗 釣魚遊戲 拍西瓜 ( 儲存最高分 ) 寶可夢猜猜我是誰 ( 基本 ) 形狀配對拼圖 台灣地圖拼圖 英文打字機 英文打字機 ( 判斷大小寫 ) 射擊外星人 猜數字 ( 猜大小 ) 猜數字 ( 幾 A 幾 B ) 連連看 ( 產生器 ) 連連看

進階遊戲範例

青蛙過河 青蛙過馬路 反彈球 ( 乒乓球 ) 打磚塊 狙擊氣球 ( 兩倍變焦 ) Flappy Bird Flappy Bird ( 聲控版 ) 走迷宮 ( 基本 ) 大型迷宮 ( 鍵盤控制 ) 大型迷宮 ( 滑鼠控制 ) 翻卡記憶遊戲 翻卡記憶遊戲 ( 改良版 ) 井字棋 ( 圈圈叉叉 ) 九宮格拼圖 九宮格拼圖 ( 改良版 ) 音階記憶 貪吃蛇 ( 分身版 ) 貪吃蛇 ( 畫筆版 ) 小雞下樓梯 拉霸機

團康遊戲範例

搖骰子 ( 1~3 個 ) 比手畫腳 ( 猜動物 ) 音樂傳球遊戲 大聲公 ( 比賽誰的氣長 ) 抽籤 ( 可調整中籤數量 ) 轉盤指針 ( 指到誰就當鬼 ) 倒數計時器 ( 基本版 ) 倒數計時器 ( 大數字版 )

遊戲設計技巧

角色 ( 地上移動 ) 角色 ( 蹲下、左右轉 ) 角色 ( 跳耀、兩段跳 ) 角色 ( 牆壁、爬牆 ) 地圖 ( 清單轉換 ) 地圖 ( 二維陣列 ) 地圖 ( 控制移動 ) 地圖 ( 牆壁碰撞偵測 ) 地圖 ( 吃東西偵測 ) 俄羅斯方塊 ( 角色與背景 ) 俄羅斯方塊 ( 移動與碰撞 ) 俄羅斯方塊 ( 放置方塊 ) 俄羅斯方塊 ( 消除完成方塊 ) 俄羅斯方塊 ( 下個形狀 )