資訊內(nèi)容
Scratch第63講:小動畫—我和我的祖國
先看看CC哥做的小動畫視頻:
設(shè)計思路
思路很簡單,就是首先找一張圖片,然后做一些動畫渲染效果。
圖片就去百度圖片上找:
看了一下這張圖片不錯。
那做什么效果呢?第一個就是想讓字能動,那就需要把這“我和我的祖國”這幾個字扣出來,怎么扣呢?去掉圖片背景,在scratch有兩種辦法,一種是在Scratch里面涂色,用透明的顏色涂色,或者就是在scratch里面用橡皮擦一點(diǎn)點(diǎn)擦,這兩種辦法都挺常用的,尤其是處理一些復(fù)雜些的造型。
所以做Scratch還是要掌握一些作圖的技巧,CC哥最熟悉的還是美圖秀秀,用了智能摳圖,一下子就把我和我的祖國這幾個字給摳出來了。
然后把每個字單獨(dú)做成造型,就可以圍繞著字來做動畫了。
然后效果這個部分,經(jīng)過仔細(xì)考慮,大概做三個效果:
1:配上音樂并做出動態(tài)節(jié)奏波形
2:煙花效果
3:字的特效
如果想免費(fèi)獲得CC哥的講座中的程序代碼以及游戲素材,可以通過掃描二維碼關(guān)注《跟我學(xué)Scratch編程》,然后點(diǎn)擊獲取代碼即可。
字的特效
先說最簡單的,字的特效大家可以自己創(chuàng)意,CC哥最近編程也變懶了,竟然每個字用了個角色,一般高手都是用一個角色,然后用造型切換和克隆就好了。所以由此處可以看出CC哥并不是編程高手。
CC哥就做了兩個特效,一個是開始時,字從遠(yuǎn)處飛過來,逐漸變大。另一個效果就是不斷地調(diào)整亮度。
煙花特效
煙花特效是CC哥在網(wǎng)上學(xué)的,所謂的煙花特效其實就是角色的軌跡處理,軌跡就是漸漸消失的過程。逐漸消失怎么做?就是用近乎透明的背景圖片一層層的重復(fù)去覆蓋,聽明白沒?說慢一點(diǎn):用一個90%透明的背景圖片覆蓋一次的時候,被覆蓋的畫面就會淡一點(diǎn),再覆蓋一次,就會越淡一點(diǎn),覆蓋10次,畫面就會被全部覆蓋住了。把這個原理應(yīng)用到軌跡里。一個角色在移動的過程中,不斷地用圖章去留下軌跡,然后這些軌跡圖章被一層層覆蓋掉,就形成了軌跡。
就是把這個背景的透明度設(shè)成90%,然后不斷地覆蓋。(不想被覆蓋的內(nèi)容就移動到前面來
。)
然后煙花就簡單了:
煙花造型
第一步先克隆一圈,每轉(zhuǎn)10度克隆一個。顏色的特效是隨機(jī)取的。J這個變量來決定煙花的大小。
每個克隆體啟動之后,就沿著自己的方向向四周擴(kuò)散,變走變蓋上圖章。走的過程中不斷改變顏色特效。
考慮重力的效果,就把重力效果的代碼加上。
這樣煙花就做好了,配合剛才的背景反復(fù)覆蓋,就形成了煙花軌跡的效果。
為了增加煙花的效果,CC哥直接復(fù)制了三個一摸一樣的煙花角色,這樣就會讓煙花出現(xiàn)的效果更逼真,比如幾個煙花同時綻放。
音樂節(jié)奏
畫上方的變動正弦曲線就是表示音樂的節(jié)奏,我們的思路是:
1:用響度這個偵測量來取配樂的響度值。
2:用正弦曲線來表示響度,正弦曲線的振幅越高,就說明音樂越響。
3:引入計時器來增加曲線的效果。
這段程序里有一個列表,這個列表里CC哥存的就是我愛我的祖國音樂的響度值。這個怎么得到呢?方法就是提前用循環(huán)把音樂的響度值讀出來并寫入一個列表中。
當(dāng)然你也可以不用提前取響度值,而直接讀取實時偵測的響度值。CC哥提前取響度值,是感覺實時取偵測響度值再畫出正弦曲線還是有滯后的。當(dāng)然提前取響度值,面臨的問題就是播放同步的問題。就算你每個0.1秒取一次,然后在運(yùn)行程序時,就發(fā)現(xiàn)就算你設(shè)定成0.1秒畫一次正弦曲線,但是還是不同步,這是因為執(zhí)行程序代碼也需要時間,如果你提取響度值的程序代碼和畫正弦曲線的代碼長度不一樣,那么就會形成偏差,曲子長了之后你會發(fā)現(xiàn)偏差到最后還挺大。所以CC哥在提取響度值時就是直接在程序里提取,就是把sensor賦值的那句代碼換成了提取響度值的代碼。這樣基本上就同步了。
這段程序就是畫正弦曲線,三個變量分別代表,曲線x軸的起點(diǎn),曲線y軸的位置,以及振幅的放大量。相當(dāng)于x軸每間隔10步畫一個豎道。
這是每一個豎道的代碼:
公式不好理解,大家注意下面幾點(diǎn)就好理解了:
1:第三句子是設(shè)定豎道的亮度,亮度值跟豎道的振幅有關(guān)。
2:第四句是找到畫豎道的起點(diǎn),第六句是豎道終點(diǎn)。
3:sensor的變量與正弦曲線的振幅相關(guān)。
4:計時器是為了讓正弦曲線流動起來。大家可以試一下把計時器拿掉,就會發(fā)現(xiàn)效果的不同。
飛機(jī)效果
最后在做帖子的時候,CC哥突然想把飛機(jī)編隊也做進(jìn)去,就費(fèi)勁在網(wǎng)上又找了飛機(jī)的圖片,然后還是用了軌跡的做法,把飛機(jī)拉彩帶的效果也做進(jìn)去了。
克隆三個飛機(jī),中間那個飛機(jī)的plane-num為0。克隆完第一個之后過0.6秒,再克隆上下兩個,可以形成一個三角形編隊。
克隆體啟動后,要檢查一下,如果是上下兩個飛機(jī),則要先到出發(fā)的位置,然后再開始向左飛。
軌跡的造型,CC哥分別做了三個角色,每個角色不同的顏色。
軌跡的代碼,很簡單。結(jié)合前面那個背景反復(fù)覆蓋的程序,就形成了飛行軌跡的效果。
CC哥做這個小動畫雖然不完美,但是還是很應(yīng)景,算是CC哥送給祖國的一份小禮物。這個代碼不在全部程序打包的代碼里面,如果想要這個小動畫的素材和代碼的朋友,就把這個帖子幫CC哥轉(zhuǎn)發(fā)一下朋友圈吧。
聲明:本文章由網(wǎng)友投稿作為教育分享用途,如有侵權(quán)原作者可通過郵件及時和我們聯(lián)系刪除
