Intoweb
本文將帶你通過對下雪天氣的特征提取,綜合使用Scratch自帶素材庫,制作夜晚下雪,樹冠積雪,天亮雪化的動畫。這個(gè)實(shí)例綜合運(yùn)用了Scratch多項(xiàng)特性,可以幫你加深對Scratch外觀特效的理解。
下雪是常見的氣候,那么我們將其轉(zhuǎn)化為程序,就可以更好地理解程序與現(xiàn)實(shí)的相同與不同,明白構(gòu)建程序需要的特征與可以舍棄的特征。
若我們要模擬下雪,首先要確定程序的演示目標(biāo),雪從天上落下來,要堆在地面上,堆在樹上,天亮后融化……
最終定下動畫要完成的三個(gè)特征:落下、堆積、融化。
程序分為夜晚和白天兩個(gè)部分,夜晚雪花落下并堆積。白天,切換白天背景,停止落雪程序,開始雪花融化程序。
1. 我們復(fù)制背景庫中的Blue Sky作為一個(gè)新的角色,選擇Blue Sky作為背景,在繪制背景中,直接將藍(lán)天背景拖到原小貓角色里面去,再刪除原小貓角色即可。
2. 為了體現(xiàn)白天與黑夜的區(qū)別,我們這里添加一個(gè)太陽(Sun)角色來表明是白天。
3. 添加雪花(Snowflake)角色,即可完成所有角色的選擇。
落雪發(fā)生在夜晚,我們需要對原Blue Sky做修改,把它變成昏暗的夜晚。
對藍(lán)天背景進(jìn)行修改,用選擇工具點(diǎn)擊藍(lán)色天空部分,點(diǎn)填充,拖動顏色亮度條,修改出夜色。
然后是綠樹的部分,我們使用選擇工具點(diǎn)擊綠樹時(shí),會發(fā)現(xiàn)它是多個(gè)角色組合而成的,我們這里按住“Shift”鍵,開啟多選模式,將所有綠樹部分選中。選擇組合,然后將輪廓修改為無輪廓,顏色修改為更深的綠色。
改完樹木后,發(fā)現(xiàn)綠樹擋住了一部分棕色的道路,選擇道路,將其放最前面。
本體隱藏,克隆體顯示,我們曾經(jīng)研究過克隆體數(shù)量上限問題,300片雪花做不出積雪的效果,所以當(dāng)克隆體雪花落到地面后,用畫筆的圖章工具在原地留下印記,然后刪除掉克隆體。
為了雪花更逼真,給它加上虛像特效、隨機(jī)大小、一直旋轉(zhuǎn)。
雪花從空中飄落時(shí)并不是垂直下落,我們給每個(gè)雪花隨機(jī)的起點(diǎn)與落點(diǎn),這樣每個(gè)雪花的飄落方向就完全隨機(jī)了。起點(diǎn)統(tǒng)一選擇上邊緣,即(-240~240,180)。落點(diǎn)在道路上,x坐標(biāo)仍然為-240~240,y坐標(biāo)為-180~-160。下落時(shí)間可以設(shè)定為隨機(jī)4~8秒。
下雪時(shí)總有部分雪花落在樹上,我們通過隨機(jī)參數(shù)產(chǎn)生一個(gè)概率判斷,讓1/4的雪花落在樹梢上,剩下的落在路上。
設(shè)置概率的方法,可以使用隨機(jī)數(shù)。例如1/4的概率,產(chǎn)生1到4的隨機(jī)數(shù),判斷當(dāng)數(shù)字等于1時(shí)執(zhí)行條件。
遇到樹冠的判斷使用取色器選取樹的顏色作為標(biāo)記。
由于樹在道路上方,根據(jù)透視原理,可以理解為樹離我們更遠(yuǎn),那么樹上的雪花應(yīng)該更小。
樹的邊緣并不平整,所以落點(diǎn)可以有一定起伏。
為了實(shí)現(xiàn)雪花的融化效果,我們需要讓雪花緩慢消失,雪花由于數(shù)量較多,克隆體數(shù)量有上限(300個(gè)),所以使用圖章制作,圖章繪制的圖案是無法編寫程序的。因此只能通過其他方法影響雪花圖案,給人雪花在緩慢消失的錯(cuò)覺。
我們這里使用一張與原背景圖相同的角色(Blue Sky原圖復(fù)制的角色)緩慢出現(xiàn)在最上層,覆蓋雪花,來制作雪花融化特效。
用空格鍵作為信號,開始時(shí)隱身(虛像效果100),按下空格鍵后通知藍(lán)天角色逐漸顯示,具體程序需使用外觀特效中的虛像特效(虛像效果重復(fù)減小直到0)。
藍(lán)天角色(非背景)代碼如圖:
太陽開始時(shí)隱藏,當(dāng)按下空格鍵后等待一會兒再慢慢從邊緣移到舞臺中間偏上的位置。
為了讓雪花白天停止飄落,所以我們需要設(shè)一個(gè)變量“下雪”,當(dāng)“下雪”為“假”時(shí)通知雪花停止克隆。
總結(jié):這個(gè)下雪動畫充分利用了編程的優(yōu)勢,綜合運(yùn)用克隆、圖章、隨機(jī)數(shù)、概率、顏色判斷等多項(xiàng)Scratch功能和技巧,模擬出比普通動畫更自然的下雪效果,希望你能把這些技巧靈活運(yùn)用到其他動畫中去。