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

極客小將

您現在的位置是:首頁 » scratch編程資訊

資訊內容

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

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

速度是矢量,有大小有方向,它描述物體運動的快慢,和反映物體運動的方向;速率是標量,有大小沒有方向。

所以當我們把速度放在直角坐標系時,我們就可以通過X坐標和Y坐標去控制速度的大小和方向。

直接講解這些物理知識,可能感覺會比較抽象。幸好我們可以通過完成小球發射功能去深刻的理解速度的概念。

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

添加速度

首先,我們建立“設置小球發射速度”和“移動小球”的自定義積木,代替原來的“移動5步”積木。

為什么不再使用“移動5步”積木呢?因為這個積木使用起來不夠靈活,而且我們重新完成一個類似的功能難度也不太大。

現在我們先添加兩個變量,分別命名為X和Y,通過這兩個變量我們去控制小球的速度。

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

把兩個變量添加后,我們來談談為什么X坐標和Y坐標同時變化就可以讓小球移動。

在Scratch里,最有效的移動方式有3個積木,分別是“移動10步”,“將x坐標增加10”和“將y坐標增加10”。單獨使用它們時,都無法實現一個角度控制的問題,但是同時使用“將x坐標增加10”和“將y坐標增加10”就可以達到預期的效果,例如:兩個積木增加同等的數,那么他們就會從45度角發射出去。

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

所以我們開始完成“設置小球發射速度”和“移動小球”兩個自定義積木。

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

在“設置小球發射速度”積木中的“如果那么”積木的作用是什么呢?這個功能是我們希望在發射角度隨機的同時,X不等于-1、-2、0、1、2。因為這樣會導致出現一個發射角度接近90度的情況,90度的發射會導致小球無法實現除了垂直以外的反彈。

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

碰到邊緣反彈

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

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

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

可以通過上面的坐標圖看出,只需要把X變量乘-1,就可以實現反彈,因為Y坐標是無論反彈與否,小球是依舊向上移動的,所以Y變量是不需要改變。

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

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

那么碰到擋板反彈時又是哪個坐標發生變化呢?

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

碰到磚塊

當“小球”碰到“磚塊”,我們需要實現兩個功能,反彈和磚塊消失。

其實碰到磚塊的反彈和碰到擋板的反彈,原理是一樣的,但是我們需要關注的一個細節就是,碰到磚塊時,我們是需要考慮碰到磚塊的是哪個位置,上下和左右反彈的軌跡自然是不可能一樣的。

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

這里我們通過小球和磚塊的Y坐標進行判斷,究竟是碰到上下,還是左右。如何判斷呢?

因為目前的坐標是根據中心點確認的,所以我們通過兩者的Y坐標相減,得出的結果與磚塊的高度進行比較,如果大于磚塊高度的一半,那么小球碰到磚塊的上方,反之則是碰到右上方或左上方。

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

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

然后小球該怎么進行反彈呢?

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

好了,走到這步,整個游戲看起來就基本運行起來了,可是里面還有很多的bug等著我們去解決呢!

end

聲明:本文章由網友投稿作為教育分享用途,如有侵權原作者可通過郵件及時和我們聯系刪除

預約試聽課

已有385人預約都是免費的,你也試試吧...

主站蜘蛛池模板: 淳化县| 安溪县| 克东县| 子长县| 丹巴县| 横峰县| 韶山市| 黄梅县| 泸溪县| 武穴市| 社旗县| 叙永县| 新郑市| 万州区| 浦北县| 乌兰察布市| 汝阳县| 九龙坡区| 灵璧县| 汶川县| 宁海县| 湟中县| 乌拉特中旗| 泸州市| 黎城县| 天祝| 涟水县| 梨树县| 邯郸市| 白城市| 大城县| 临夏市| 桃源县| 方城县| 乌恰县| 崇阳县| 凤翔县| 奉新县| 琼结县| 贵州省| 西青区|