資訊內(nèi)容
Scratch打磚塊游戲課程-第三講:物理中的速度

速度是矢量,有大小有方向,它描述物體運(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ā)射功能去深刻的理解速度的概念。

添加速度
首先,我們建立“設(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)タ刂菩∏虻乃俣取?

把兩個(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ā)射出去。

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

在“設(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)除了垂直以外的反彈。

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

可以通過(guò)上面的坐標(biāo)圖看出,只需要把X變量乘-1,就可以實(shí)現(xiàn)反彈,因?yàn)閅坐標(biāo)是無(wú)論反彈與否,小球是依舊向上移動(dòng)的,所以Y變量是不需要改變。
那么舉一反三,我們添加一個(gè)“檢測(cè)小球是否出界”的積木,完成碰到右邊,上方和左邊的反彈功能吧。

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


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

這里我們通過(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ì)研究下方的代碼。

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

好了,走到這步,整個(gè)游戲看起來(lái)就基本運(yùn)行起來(lái)了,可是里面還有很多的bug等著我們?nèi)ソ鉀Q呢!
end
聲明:本文章由網(wǎng)友投稿作為教育分享用途,如有侵權(quán)原作者可通過(guò)郵件及時(shí)和我們聯(lián)系刪除

- 上一篇
Scratch創(chuàng)意編程二——指針式時(shí)鐘
指針式時(shí)鐘
- 下一篇
ScratchJr-適合5-7歲孩子學(xué)習(xí)的編程軟件
隨著智能手機(jī)、平板電腦、智能設(shè)備等產(chǎn)品的迅速發(fā)展,如今的交互數(shù)字技術(shù)是孩子們必須要掌握的技能之一,對(duì)于現(xiàn)在的孩子來(lái)說(shuō),越早學(xué)習(xí)這些技術(shù),優(yōu)勢(shì)也就越大。他們需要知道,自己有能力把機(jī)器人拆開(kāi),也有能力把機(jī)器人組裝起來(lái);如果自己不喜歡某款A(yù)pp應(yīng)用,那么干脆自己去編一個(gè)新的。孩子們?cè)诰幊痰倪^(guò)程