国产日韩欧美一区二区三区综合,日本黄色免费在线,国产精品麻豆欧美日韩ww,色综合狠狠操

極客小將

您現(xiàn)在的位置是:首頁(yè) » scratch編程資訊

資訊內(nèi)容

用Scratch制作煙花

極客小將2020-11-25-
授權(quán)轉(zhuǎn)載?|?千里馬快樂(lè)編程?qianlima_biancheng 原文作者 | CG 原文標(biāo)題 |?用Scratch制作煙花 標(biāo)簽:難度中級(jí);動(dòng)畫(huà);變量

授權(quán)轉(zhuǎn)載?|?千里馬快樂(lè)編程?qianlima_biancheng

原文作者 | CG

原文標(biāo)題 |?用Scratch制作煙花

標(biāo)簽:難度中級(jí);動(dòng)畫(huà);變量;隨機(jī)數(shù);克??;軌跡;畫(huà)筆;煙花;


今天我們來(lái)介紹一些煙花的知識(shí),并用Scratch編程制作煙花動(dòng)畫(huà)。先來(lái)看看動(dòng)畫(huà)效果吧:

上面的煙花動(dòng)畫(huà)其實(shí)是由四種不同類型的煙花特效組成的。它們可是全部都是通過(guò)畫(huà)筆實(shí)時(shí)計(jì)算出來(lái)的喲。

1.?????知識(shí)點(diǎn)

本文介紹的煙花制作方法使用了下面的知識(shí)點(diǎn):

1.1?重力加速度(拋物線)

煙花是是由火藥和金屬粉末組成的,五彩繽紛的顏色其實(shí)是燃燒時(shí)不同的金屬離子(如鎂、鋁等)與氧分子發(fā)生化學(xué)反應(yīng)而發(fā)出的獨(dú)特顏色。所以煙花是有重量的。有重量的物體在大氣中運(yùn)動(dòng)都會(huì)受到地球引力的作用,呈現(xiàn)出拋物線軌跡。所以要制作好煙花效果首先要知道如何通過(guò)編程描述拋物線。簡(jiǎn)單來(lái)說(shuō)就是:

  • 垂直方向下落速度會(huì)越來(lái)越快(有一個(gè)面向地心的固定的加速度)

  • 水平方向速度不變

關(guān)于拋物線運(yùn)動(dòng)的更多知識(shí)可參考千里馬的這篇文章:從"憤怒的小鳥(niǎo)"學(xué)習(xí)用編程展示物理規(guī)律

1.2?漸隱效果(彗星效果)

?

這是做煙花軌跡的一個(gè)竅門和重點(diǎn)。我們希望看到的煙花線條軌跡是頭部較亮,尾部較暗,呈漸隱效果,如下圖:

?upload/article/images/2020-11-25/51012adddd63ef57ce78b31223f18eb1.jpg

這種效果的實(shí)現(xiàn)方法是:

-?????? 制作一個(gè)和屏幕一樣大的全黑角色:

upload/article/images/2020-11-25/ea5f59dbdede8051bd3341a822de1d1c.jpg

-?????? 把該角色的虛像效果設(shè)成90(就是說(shuō)它的透明度變成10%)

-?????? 然后不停地使用圖章讓它覆蓋屏幕:

upload/article/images/2020-11-25/792a080b6f5ff5da27610844a4876dfb.jpg

這種實(shí)現(xiàn)方法的原理如下圖所示:

upload/article/images/2020-11-25/60672377ef83e740cc8dc94c0ba20af2.jpg

  • 畫(huà)筆畫(huà)出來(lái)的軌跡實(shí)際上是由一系列點(diǎn)組成的。如果畫(huà)筆是從左向右運(yùn)動(dòng)的,則左邊的點(diǎn)比右邊的點(diǎn)先在舞臺(tái)上出現(xiàn)。上圖五個(gè)橙色方格代表了畫(huà)筆的軌跡點(diǎn),1最先出現(xiàn),5最晚出現(xiàn)。

  • 上面程序里虛像效果90的黑色角色相當(dāng)于上圖中標(biāo)記為A的黑色方塊。兩個(gè)A疊起來(lái)就形成B的效果(B比A稍微黑一點(diǎn)),三個(gè)A疊起來(lái)就形成C,四個(gè)A疊起來(lái)就形成全黑的D。這個(gè)疊起來(lái)的動(dòng)作就相當(dāng)于程序里的“圖章”。

  • 把橙色方格和黑色方塊疊起來(lái)就是最終效果。沒(méi)有被黑色方塊蓋住的5號(hào)方格就是原來(lái)的顏色,4-3-2-1依次變暗,1或者更早之前出現(xiàn)的方格就完全看不到了。

動(dòng)圖效果如下:?

https://cdn.china-scratch.com/timg/191107/1405394317-4.gif

1.3?3D效果

?

有立體感的3D煙花更加好看,制作3D效果需要了解一定的3D知識(shí)?;镜?D知識(shí)請(qǐng)參考千里馬這一篇文章:用Scratch做一個(gè)3D引擎

當(dāng)然3D制作有點(diǎn)小復(fù)雜,也并不是制作煙花必需的。

好,下面可以開(kāi)始制作了。

2.?????制作方法

?

2.0 輔助角色

?

在開(kāi)始畫(huà)煙花軌跡之前,我們需要先建立兩個(gè)角色:一個(gè)是上面1.2章節(jié)講過(guò)的用來(lái)實(shí)現(xiàn)漸隱效果的黑色角色;另一個(gè)是聲音角色,用來(lái)集中控制聲音的播放。這樣在其它角色里只需要廣播播放某種聲音的消息,這個(gè)聲音角色就可以播放相對(duì)應(yīng)的聲音。

upload/article/images/2020-11-25/969a4abedeaf8e038d4556d94b22b237.jpg

?

upload/article/images/2020-11-25/5c9607db8532295da8c6e803a684c19f.jpg

聲音效果可以極大地增強(qiáng)現(xiàn)實(shí)感,所以請(qǐng)務(wù)必給動(dòng)畫(huà)配上聲音。

?

2.1 煙花發(fā)射

首先,我們做出煙花發(fā)射上升的效果,其實(shí)就是用畫(huà)筆畫(huà)一條有重力加速度的從下往上升的曲線,再配上音效。

upload/article/images/2020-11-25/2d9302b164ba4fd376a41884b19cd6d3.jpg

?

效果如下:

https://cdn.china-scratch.com/timg/191107/1405394317-4.gif

2.2 爆炸散開(kāi)

-?????? 接著,我們讓煙花在上升到最高點(diǎn)時(shí)爆炸散開(kāi)(vy=0時(shí)升到最高點(diǎn),之后速度向下而下降)。散開(kāi)其實(shí)就是使用克隆來(lái)產(chǎn)生很多的子煙花軌跡。

upload/article/images/2020-11-25/73d28e8eef6977e4e6e92eaba80084dd.jpg

-?????? 子煙花軌跡應(yīng)該比上升時(shí)的軌跡要小。

-?????? 為了使爆開(kāi)后的各條煙花軌跡呈圓形,我們控制水平方向和垂直方向的速度,使得vx=2*cosA和vy=2*sinA(A是隨機(jī)變化的角度值,代表速度的方向;2代表速度的值。這樣使得每條子煙花的速度方向發(fā)生變化,但速度的值不變,形成圓形)。原理如下圖所示:

upload/article/images/2020-11-25/11f4b7c9ddca4ae86c122bbcf4ad9eec.jpg

?克隆體的程序:

upload/article/images/2020-11-25/cc4d2651e12e767ca3008c37e8aea65c.jpg

第一種煙花效果做好了:

https://cdn.china-scratch.com/timg/191107/1405406210-12.gif

2.3 閃閃的煙花

接下來(lái)我們做下面這種閃閃的煙花效果:

https://cdn.china-scratch.com/timg/191107/14054152b-13.gif

-?????? 首先是用克隆的方法畫(huà)出很多條較細(xì)的煙花拋物線軌跡。同樣一束煙花的出發(fā)點(diǎn)應(yīng)該一樣。通過(guò)改變它們的初始水平速度和垂直速度、以及線條顏色和大小,形成不同的煙花線條:?

upload/article/images/2020-11-25/6b09469dd89aaeb34f18431fe2ec63ec.jpg

upload/article/images/2020-11-25/0982999486668b67d6b5a35249d25412.jpg

效果:?

https://cdn.china-scratch.com/timg/191107/1405424H1-16.gif

-?????? 接下來(lái)做閃閃的亮點(diǎn)效果。首先是要改變角色的造型(變成一個(gè)純色的圓形);然后在克隆體的程序中,在煙花線條消失之前,使用圖章留下圓點(diǎn)。由于章節(jié)1.2中提到的漸隱作用,圖章留下來(lái)的圓點(diǎn)會(huì)一閃而過(guò)消失在黑暗中。記得改變圓點(diǎn)的大小和顏色哦。

upload/article/images/2020-11-25/67771d748bc199d8a88a9ce4f35a3722.jpg

upload/article/images/2020-11-25/5be9bf723bef11cf7d7396ced28785d0.jpg

第二種煙花效果也做好了:

https://cdn.china-scratch.com/timg/191107/14054152b-13.gif

2.4 煙花文字

接下來(lái)做煙花文字效果:?

https://cdn.china-scratch.com/timg/191107/1405435500-20.gif

-?????? 首先是用造型工具創(chuàng)建一個(gè)文字角色

https://cdn.china-scratch.com/timg/191107/14054414P-21.jpg

-?????? 讓文字先隱藏,先做出煙花發(fā)射上升效果

https://cdn.china-scratch.com/timg/191107/1405442E7-22.jpg

https://cdn.china-scratch.com/timg/191107/14054432c-23.jpg

-?????? 當(dāng)煙花上升到最高點(diǎn)時(shí)(vy=0)即爆炸,然后文字出現(xiàn),并使用像素化讓其模糊。

-?????? 之后文字做重力加速下落。

-?????? 在下落過(guò)程中不停使用圖章留下軌跡,并配合章節(jié)1.2中提到的漸隱作用。

-?????? 再使用虛像使得文字逐漸消失

https://cdn.china-scratch.com/timg/191107/14054435J-24.jpg

https://cdn.china-scratch.com/timg/191107/1405445420-25.gif

-?????? 最后用同樣方法做出其它的文字煙花,改變顏色、位置及發(fā)射時(shí)間,效果如下:

https://cdn.china-scratch.com/timg/191107/1405435500-20.gif

2.5 3D煙花

-?????? 制作3D煙花效果需要了解3D特效的知識(shí),請(qǐng)先參考此文《用Scratch做一個(gè)3D引擎》,設(shè)置好視點(diǎn)、投射面、旋轉(zhuǎn)角度等:

-?????? 3D煙花和2.1-2.2節(jié)介紹的2D煙花一樣,也是包括發(fā)射上升-爆炸散開(kāi)的過(guò)程。首先也是要先發(fā)射一條在y方向做重力加速運(yùn)動(dòng)的煙花

https://cdn.china-scratch.com/timg/191107/14054541D-27.jpg

https://cdn.china-scratch.com/timg/191107/1405451514-28.jpg

-?????? 煙花上升到最高點(diǎn)后就爆炸散開(kāi):

https://cdn.china-scratch.com/timg/191107/14054641V-29.jpg

-?????? 為了使爆開(kāi)后的各條煙花軌跡呈一個(gè)球體,我們控制x,y,z方向的速度,使得vy=2*sinA, vx=2*cosA*cosB,vz=2*cosA*sinB(A、B是隨機(jī)變化的角度值,它們控制速度的方向;2代表速度的值。這樣使得每條子煙花的速度方向發(fā)生變化,但速度的值不變,形成球體)。原理如下圖所示:

https://cdn.china-scratch.com/timg/191107/1405464N2-30.jpg

克隆體程序:

https://cdn.china-scratch.com/timg/191107/1405462952-31.jpg

3D煙花的效果:

https://cdn.china-scratch.com/timg/191107/14054K528-32.gif

最后我們把各種不同的煙花組合在一起,就是這個(gè)效果:

原程序請(qǐng)參考:

https://scratch.mit.edu/projects/284146235/

3.?????小結(jié)

除了上面提到的知識(shí)點(diǎn),做好煙花效果的一個(gè)重要竅門是:多使用隨機(jī)數(shù)來(lái)改變時(shí)間、大小、顏色、速度等各種變量,做出各種不同的效果。煙花之所以吸引人,正是因?yàn)樗鼈儧](méi)有固定的模式,變幻莫測(cè)。同學(xué)們請(qǐng)盡情發(fā)揮自己的想象力,用編程做出更多更炫的煙花效果。

聲明:本文章由網(wǎng)友投稿作為教育分享用途,如有侵權(quán)原作者可通過(guò)郵件及時(shí)和我們聯(lián)系刪除

預(yù)約試聽(tīng)課

已有385人預(yù)約都是免費(fèi)的,你也試試吧...

主站蜘蛛池模板: 广汉市| 竹北市| 阿拉善右旗| 滦南县| 且末县| 阿拉善盟| 白河县| 无极县| 巴彦淖尔市| 乐清市| 郯城县| 晋州市| 义马市| 和静县| 甘南县| 安陆市| 曲沃县| 临颍县| 司法| 利辛县| 宜昌市| 大厂| 南宫市| 万全县| 奇台县| 永仁县| 佛坪县| 花垣县| 武陟县| 长宁区| 宁明县| 芦溪县| 乌拉特中旗| 观塘区| 定边县| 东乡族自治县| 海晏县| 民乐县| 德安县| 南城县| 巧家县|