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

極客小將

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

資訊內(nèi)容

Scratch第四十七講:臺(tái)球(多一個(gè)臺(tái)球)

極客小將2021-02-08-
想了解編程技巧,就請(qǐng)點(diǎn)擊上面藍(lán)字:跟我學(xué)Scratch編程,關(guān)注CC哥 首先祝大家五一節(jié)快樂(lè)哦,想必大家都出去玩了,CC哥在家繼續(xù)給大家講Scratch。

想了解編程技巧,就請(qǐng)點(diǎn)擊上面藍(lán)字:跟我學(xué)Scratch編程,關(guān)注CC哥

首先祝大家五一節(jié)快樂(lè)哦,想必大家都出去玩了,CC哥在家繼續(xù)給大家講Scratch。https://cdn.china-scratch.com/Public/Home/images/grey.gifhttps://cdn.china-scratch.com/Public/Home/images/grey.gif

今天還繼續(xù)講臺(tái)球,臺(tái)球這個(gè)游戲其實(shí)CC哥想了很久的,這個(gè)游戲說(shuō)簡(jiǎn)單了其實(shí)就是一個(gè)碰撞,但是如果我們上網(wǎng)看看,通常沒(méi)什么用scratch做的比較好的臺(tái)球游戲,為什么呢?因?yàn)閺?fù)雜。大家大多數(shù)看的都是一個(gè)球的臺(tái)球游戲,很少見(jiàn)到兩個(gè)球,為什么呢?因?yàn)榍蚝颓蛑g會(huì)碰撞。一旦碰撞就會(huì)發(fā)生路徑的變化,在一個(gè)球臺(tái)里如果有多個(gè)球,那么相互之間的碰撞就會(huì)變得非常復(fù)雜。你怎么處理呢?想想就會(huì)頭疼。今天CC哥就來(lái)嘗試在臺(tái)球桌上放兩個(gè)球。游戲還是在上一講的基礎(chǔ)來(lái)做。

這個(gè)臺(tái)球有意思沒(méi)有,CC哥為了把球打進(jìn)洞,自己還練習(xí)了挺長(zhǎng)時(shí)間,還真是有點(diǎn)不容易。https://cdn.china-scratch.com/Public/Home/images/grey.gif

下面講講這個(gè)程序,這個(gè)程序在球臺(tái)上增加了一個(gè)球,游戲的目的是用白球擊打這個(gè)藍(lán)球,把球打進(jìn)洞。

程序的難點(diǎn)是,當(dāng)白球擊打到藍(lán)球的時(shí)候,這兩個(gè)球的運(yùn)動(dòng)軌跡會(huì)發(fā)生什么變化。如果想讓運(yùn)動(dòng)軌跡符合實(shí)際,那么就要用點(diǎn)物理的知識(shí)了。如果白球正好擊打到藍(lán)球的球心,那么白球的動(dòng)能應(yīng)該全部傳遞給藍(lán)球,而白球就要靜止下來(lái)。如果白球沒(méi)有打到球心,那么藍(lán)色的球和白色的球會(huì)分別彈向不同的方向,并且各自的速度也不一樣。那怎么計(jì)算呢?

upload/article/images/2021-02-08/45b06c20465e656a78e9407fb15d2c66.jpg

看一下這個(gè)圖,當(dāng)下面的球撞到上面的球的時(shí)候,會(huì)有這四個(gè)關(guān)系:

? ?上面的球會(huì)往v2的方向走,下面的球會(huì)往v1的方向走;

????v1和v2的角度是垂直的;

????v2的方向是沿著兩個(gè)球心的連線;

????v12+v22=v2

有了這個(gè)撞擊的規(guī)則,大家知道兩個(gè)球碰撞的程序怎么設(shè)計(jì)了嗎?

upload/article/images/2021-02-08/ed3ad3d38b1a635fb8910c5a276b6b3d.jpg

注意,這里只是一個(gè)球撞擊另一個(gè)靜止的球的做法,所以我們今天做的程序只是設(shè)計(jì)了白球去撞擊靜止的藍(lán)球,如果撞擊之后兩個(gè)球都在運(yùn)動(dòng)中發(fā)生的碰撞,CC哥今天沒(méi)做。大家也可以看看如果兩個(gè)球同在運(yùn)動(dòng)中的時(shí)候,如果發(fā)生碰撞,路徑和速度的算法應(yīng)該如何。

程序講解

首先增加了一個(gè)角色,就是藍(lán)球,ball2。

這個(gè)藍(lán)球的程序CC哥就是用角色的運(yùn)動(dòng)來(lái)處理了,而不是再象白球那樣用畫筆來(lái)畫了。也是為了處理簡(jiǎn)便。白球的程序基本沒(méi)變,大家可以參考上一講。

upload/article/images/2021-02-08/1bc37eb67d11aa887f6a41b26f6ea12c.jpg

今天重點(diǎn)講的是藍(lán)球的程序。

upload/article/images/2021-02-08/888b28f67f902257ce84d69c49ee3a64.jpg

這段程序有幾個(gè)部分:

1:檢測(cè)顏色來(lái)檢測(cè)是否發(fā)生兩球的撞擊。

2:如果發(fā)生碰撞就先檢測(cè)藍(lán)球在碰撞后的方向。

upload/article/images/2021-02-08/30a49044ea00345037912a4fc684e1d2.jpg

當(dāng)兩個(gè)球發(fā)生碰撞時(shí),先讓藍(lán)球面對(duì)白球,這時(shí)候就是藍(lán)球面對(duì)白球的球心。那么藍(lán)球下一步要彈開(kāi)的方向,就是兩個(gè)球心連線相反的方向。同時(shí)用faceballangle記錄下來(lái)藍(lán)球下一步要走的方向。

3:算出藍(lán)球和白球彈開(kāi)的初始速度。

upload/article/images/2021-02-08/e01d313bc6952427ae064063993a31c3.jpg

這個(gè)可以用剛才講的原理來(lái)算出來(lái)。

藍(lán)球的速度speed2=白球的速度Dist * cos(白球原始方向與兩個(gè)球心連線之間的夾角)

白球的速度dist=白球的速度disi * sin(白球原始方向與兩個(gè)球心連線之間的夾角)

4:算出白球的方向。

upload/article/images/2021-02-08/49d784c6b66ee3e047683a953fb634be.jpg

這個(gè)要做一個(gè)判斷,要看白球是偏左撞擊,還是偏右側(cè)撞擊,如果偏左側(cè),那么白球會(huì)往左彈,如果偏右側(cè),那么白球會(huì)向右彈。取決于白球原先行進(jìn)方向的角度,和藍(lán)球下一步要彈開(kāi)的方向角度之間的相互關(guān)系。白球彈開(kāi)的方向是和藍(lán)球運(yùn)動(dòng)方向垂直的。

5:藍(lán)球的運(yùn)動(dòng)軌跡

白球有白球的運(yùn)動(dòng)程序,所以只要確定了撞擊之后的速度,和方向,那么運(yùn)動(dòng)的部分就不用做了,因?yàn)樯弦粋€(gè)程序已經(jīng)做了。這里就只需要做藍(lán)球的運(yùn)動(dòng)軌跡程序就行了。

upload/article/images/2021-02-08/f93e6066d2abc8e057cbf79c6621dbb8.jpg

speed2是藍(lán)球的初始速度,每步減少0.05,代表了速度越來(lái)越慢,之所以寫0.05,是跟白球的運(yùn)動(dòng)同步,讓大家在減速的步調(diào)是一致的。

藍(lán)球在撞到邊框一樣會(huì)發(fā)生反彈。這里跟白球一樣,我做了一個(gè)自定義的積木,用來(lái)處理藍(lán)球跟邊框碰著后所發(fā)生的方向改變。

6:藍(lán)球碰到邊框的程序

upload/article/images/2021-02-08/1101c96f928e5c15f7303778e6040562.jpg

這個(gè)部分跟上一個(gè)白球的碰撞檢測(cè)差不多,這里就不重復(fù)講了。碰到邊上之后的移動(dòng)speed2步的命令,其實(shí)是讓藍(lán)球離開(kāi)四個(gè)臺(tái)邊。

球進(jìn)洞的程序:

球是要打到洞里的,那么我們看看藍(lán)球進(jìn)洞是什么程序控制。

upload/article/images/2021-02-08/496e35781543eb77415b2c3d11470471.jpg

這個(gè)進(jìn)洞檢測(cè)跟白球的進(jìn)洞檢測(cè)是一樣的。進(jìn)洞的效果就是消失后在球臺(tái)的正中間再次出現(xiàn)。這里就不講了。

今天的講解沒(méi)有做太多內(nèi)容,重點(diǎn)就是兩個(gè)球碰撞之后的速度和方向的計(jì)算方法。大家掌握了這個(gè)技巧,以后做碰撞的游戲肯定會(huì)生動(dòng)很多。


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

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

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

主站蜘蛛池模板: 常德市| 东明县| 得荣县| 遂川县| 嵩明县| 阳曲县| 金坛市| 武汉市| 新闻| 西峡县| 镇安县| 余干县| 湄潭县| 平塘县| 吉林省| 安阳县| 鹤壁市| 明水县| 英超| 桂平市| 丽江市| 奉贤区| 凤冈县| 行唐县| 石屏县| 外汇| 壶关县| 绥滨县| 兴文县| 喀喇沁旗| 安仁县| 贵南县| 土默特右旗| 景泰县| 龙江县| 渭南市| 吉首市| 清徐县| 邛崃市| 云霄县| 峨山|