Scratch 角色除了用 X,Y 座標定位外,也可以透過 改變角度+移動 * 步 來移動位置.
首先,先來看看角色的方向定義,預設角色的方面為 90. 我們可以開啟一個新專案,觀察角色的預設方向是否為 90 度. 這也是將來自己設計角色時的參考.
預設 90 度,因此直接移動會往右走, 想要改變移動方向,就需要先改變方向再移動.
如上圖範例,說明一個角色的方向角度,右側為 0 ~ 180,左側為 0 ~ -180.
一個球在 90 度方向做記號,每次轉 45 度後的方向如下,
當設定方向後,就可按記號方向移動. 一般角色雖沒有記號標示,但原理想同.
* 角色的角度可以按角色左上的藍色 i 圖標,角度會出現在右側區域,有數字及圖示.
基於這個方法,我們就可以讓球在螢幕中持續移動與反彈,只要改變方向,配合碰到邊緣反彈即可.
接下來,我們要加上讓球反彈的木板,還有球碰到就結束遊戲的紅線.
新增一個木板角色,讓它只在一個高度上隨著滑鼠左右移動.
球和木板相碰後,應該要由誰來處理呢?
木板從頭到尾只負責跟著滑鼠移動位置.
球卻要在碰到木板後反彈,因此我們由球來處理這段程式.
我們觀察到球落下時的方向角度,分別是 -135度 及 135 度. 而依據入射角等於反射角的設計,我們要分別將方向角度在碰撞後調整成 -45度 及 45度.
再來,我們要在底線加入紅線,當球碰到紅線就代表遊戲結束.
紅線從頭到尾只固定不動.
球卻要在碰到紅線後結束遊戲,因此我們由球來處理這段程式.
當偵測到碰到紅線時,說出 LOSE!!! ,並將程式結束.
操作過程,請參考視頻
接下來,我們試著加入三個星星,
星星被球碰到會隱藏.
三顆星星都隱藏後,判定玩家獲勝. 但如何不使用變數來累計隱藏星星數量.
利用背景切換來計數,當綠旗開始,將背景切成第一張背景,當星星被碰到後隱藏並將背景切換到下一個,當三顆星星都隱藏後,此時背景也被切到第四張,遊戲由玩家獲勝.
想想看,還有角色的那些變化可以當成一種紀錄,讓程式可以用來判斷呢? 應該有不少方法才對,請試試看!
沒有留言:
張貼留言