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

極客小將

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

資訊內(nèi)容

Scratch打磚塊游戲課程-第三講:物理中的速度

極客小將2021-04-12-
速度是矢量,有大小
upload/article/images/2021-04-12/1286b173c120bbc7e89571f983056c9a.jpg

速度是矢量,有大小有方向,它描述物體運(yùn)動(dòng)的快慢,和反映物體運(yùn)動(dòng)的方向;速率是標(biāo)量,有大小沒(méi)有方向。

所以當(dāng)我們把速度放在直角坐標(biāo)系時(shí),我們就可以通過(guò)X坐標(biāo)和Y坐標(biāo)去控制速度的大小和方向。

直接講解這些物理知識(shí),可能感覺(jué)會(huì)比較抽象。幸好我們可以通過(guò)完成小球發(fā)射功能去深刻的理解速度的概念。

https://cdn.china-scratch.com/timg/180403/091441H04-1.gif

添加速度

首先,我們建立“設(shè)置小球發(fā)射速度”和“移動(dòng)小球”的自定義積木,代替原來(lái)的“移動(dòng)5步”積木。

為什么不再使用“移動(dòng)5步”積木呢?因?yàn)檫@個(gè)積木使用起來(lái)不夠靈活,而且我們重新完成一個(gè)類(lèi)似的功能難度也不太大。

現(xiàn)在我們先添加兩個(gè)變量,分別命名為X和Y,通過(guò)這兩個(gè)變量我們?nèi)タ刂菩∏虻乃俣取?

upload/article/images/2021-04-12/4fbc097b345c113994ac5fc78b4c1a43.jpg

把兩個(gè)變量添加后,我們來(lái)談?wù)劄槭裁碭坐標(biāo)和Y坐標(biāo)同時(shí)變化就可以讓小球移動(dòng)。

在Scratch里,最有效的移動(dòng)方式有3個(gè)積木,分別是“移動(dòng)10步”,“將x坐標(biāo)增加10”和“將y坐標(biāo)增加10”。單獨(dú)使用它們時(shí),都無(wú)法實(shí)現(xiàn)一個(gè)角度控制的問(wèn)題,但是同時(shí)使用“將x坐標(biāo)增加10”和“將y坐標(biāo)增加10”就可以達(dá)到預(yù)期的效果,例如:兩個(gè)積木增加同等的數(shù),那么他們就會(huì)從45度角發(fā)射出去。

upload/article/images/2021-04-12/9dbb33612a690f1fe64d9e7c69f1c20d.jpg

所以我們開(kāi)始完成“設(shè)置小球發(fā)射速度”和“移動(dòng)小球”兩個(gè)自定義積木。

upload/article/images/2021-04-12/718d26264d5cf4a65ff57d281b028275.jpg

在“設(shè)置小球發(fā)射速度”積木中的“如果那么”積木的作用是什么呢?這個(gè)功能是我們希望在發(fā)射角度隨機(jī)的同時(shí),X不等于-1、-2、0、1、2。因?yàn)檫@樣會(huì)導(dǎo)致出現(xiàn)一個(gè)發(fā)射角度接近90度的情況,90度的發(fā)射會(huì)導(dǎo)致小球無(wú)法實(shí)現(xiàn)除了垂直以外的反彈。

https://cdn.china-scratch.com/timg/180403/091441H04-1.gif

碰到邊緣反彈

去掉“移動(dòng)5步”的積木后,我們緊接著就要去掉“碰到邊緣就反彈”積木了。為什么不能通過(guò)“碰到邊緣就反彈”積木實(shí)現(xiàn)碰到邊緣反彈的功能呢?原因是我們還需要實(shí)現(xiàn)碰到磚塊和碰到擋板反彈兩個(gè)功能,而且我們碰到底部是不能反彈。

那么反彈是如何實(shí)現(xiàn)的呢?我們先看看反彈右邊邊緣時(shí),小球的路徑是怎么樣的。

upload/article/images/2021-04-12/e5bbaab0791a544b657569ba2a13b2d3.jpg

可以通過(guò)上面的坐標(biāo)圖看出,只需要把X變量乘-1,就可以實(shí)現(xiàn)反彈,因?yàn)閅坐標(biāo)是無(wú)論反彈與否,小球是依舊向上移動(dòng)的,所以Y變量是不需要改變。

那么舉一反三,我們添加一個(gè)“檢測(cè)小球是否出界”的積木,完成碰到右邊,上方和左邊的反彈功能吧。

upload/article/images/2021-04-12/b197a14ab14379061a7b9c107b527ffe.jpg

那么碰到擋板反彈時(shí)又是哪個(gè)坐標(biāo)發(fā)生變化呢?

upload/article/images/2021-04-12/1b4ee29187dff4f879ec088421de1222.jpghttps://cdn.china-scratch.com/timg/180403/091441H04-1.gif

碰到磚塊

當(dāng)“小球”碰到“磚塊”,我們需要實(shí)現(xiàn)兩個(gè)功能,反彈和磚塊消失。

其實(shí)碰到磚塊的反彈和碰到擋板的反彈,原理是一樣的,但是我們需要關(guān)注的一個(gè)細(xì)節(jié)就是,碰到磚塊時(shí),我們是需要考慮碰到磚塊的是哪個(gè)位置,上下和左右反彈的軌跡自然是不可能一樣的。

upload/article/images/2021-04-12/a20a62bc65b98a5f247e37db3eaa423f.jpg

這里我們通過(guò)小球和磚塊的Y坐標(biāo)進(jìn)行判斷,究竟是碰到上下,還是左右。如何判斷呢?

因?yàn)槟壳暗淖鴺?biāo)是根據(jù)中心點(diǎn)確認(rèn)的,所以我們通過(guò)兩者的Y坐標(biāo)相減,得出的結(jié)果與磚塊的高度進(jìn)行比較,如果大于磚塊高度的一半,那么小球碰到磚塊的上方,反之則是碰到右上方或左上方。

那么如何判斷下方、左下方和右下方呢?我們只需要把絕對(duì)值加上,就可以完美的解決這個(gè)問(wèn)題。如何加呢?我們可以仔細(xì)研究下方的代碼。

upload/article/images/2021-04-12/e9a20407e2146a395e10e39a401935e7.jpg

然后小球該怎么進(jìn)行反彈呢?

upload/article/images/2021-04-12/f56dab324e5c4ea1b7cbfd7d99554ef5.jpg

好了,走到這步,整個(gè)游戲看起來(lái)就基本運(yùn)行起來(lái)了,可是里面還有很多的bug等著我們?nèi)ソ鉀Q呢!

end

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

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

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

主站蜘蛛池模板: 开化县| 大庆市| 阳谷县| 青龙| 岳池县| 富平县| 鄂托克旗| 曲麻莱县| 南京市| 喜德县| 应城市| 伊金霍洛旗| 兴宁市| 板桥市| 武威市| 平罗县| 岢岚县| 丹阳市| 安新县| 太保市| 宁陵县| 曲阜市| 平泉县| 绥棱县| 正宁县| 阿拉善左旗| 古交市| 汾西县| 乡城县| 宣城市| 南康市| 边坝县| 怀集县| 布尔津县| 卢氏县| 介休市| 武宁县| 新泰市| 惠来县| 常宁市| 兰考县|