App Inventor學習記錄170-圖片精靈碰撞後的反彈角度及旋轉角度

用一個小範例來演示一下圖片精靈碰撞後的反彈角度及旋轉角度

記錄一下:
App Inventor學習記錄170-圖片精靈碰撞後的反彈角度及旋轉角度


這次範例的完成品如下。

用三個按鈕控制中間火柴棒圖片順時鐘、逆時鐘轉或是停止不動。球的行進方向會朝著我們點擊螢幕的位置前進,如果不理它的話,就會是碰到邊界或是中間的火柴棒後會反彈出去。


畫面編排的部份如下。

最上方有放了一些標籤,用來顯示相關的資訊。
四個按鈕的功能是讓火柴棒順時鐘、逆時鐘轉,停止,以及清除最上方標籤的資料。


全部的程式方塊如下。


第 1部份的程式方塊記錄。

本來是打算用來 1個計時器,加上這個變數來控制圖片的旋轉,但是後來寫一寫覺得有點麻煩,干脆就用 2個計時器來控制順逆轉。所以這個變數……沒用到。


第 2部份的程式方塊記錄。

螢幕初始化的時候,先用 calll canvas.draw line的方塊畫出 2條中心線。
calll canvas.draw line方塊中的 x1,y1指的是畫線起點的座標x2,y2指的是畫線終點的座標

再用 call canvas 1.draw text方塊,在四個角落分別寫上 0度、90度、-90度、180度的文字。
call canvas 1.dratext方塊中的 text,放要顯示的文字。x,y則是放文字要出現的 x,y座標值。
在取文字位置的時候,把它想成跟圖片精靈一樣,都是取左上角那一個點的位置就對了。所以在對應的文字座標中,我都有偏移一些,好讓文字可以完全的顯示出來。

最後,再用 call imag sprite 1.move to方塊,把圖片精靈 1移動到中心點的位置上。


第 3部份的程式方塊記錄。

when canvas1.touch down當畫布被點擊的時候。呼叫 call ball 1.point in direction轉到指定方向方塊,讓球形精靈 1往 x,y的方向移動。這裡放的 get x get y是從 when canvas1.touch down方塊下取得,這兩個值代表的就是我們點到螢幕那個點的 x,y值。

然後,把 label 4.text標籤 4的文字,設定成 ball 1.heading球形精靈 1的前行方向的角度。


第 4部份的程式方塊記錄。

當順時鐘按鈕按下之後,啟動 clock 1計時器 1,關閉計時器 2。
計時器 1是用來順時鐘轉,計時器 2是用來逆時鐘轉。


第 5部份的程式方塊記錄。

跟第 4部份開啟關閉計時器的部份相反。


第 6部份的程式方塊記錄。

把 2個計時器都關閉,計時器不動,圖片就不動。


第 7部份的程式方塊記錄。

當計時器 1啟動的時候,把圖片精靈 1的 heading,也就是角度,設定成每次計時就減 1,然後除以 360的餘數。這裡的數學用法我們就不說明了,大家可以查一下。

另外,這裡有加上一個判斷圖片精靈 heading是否大於 180度的判斷式。
這個產生的效果就是 270(-90)像這樣的型式。
在 app inventor的角度中,270度=-90度。所以這裡就讓它們一起顯示出來。


第 8部份的程式方塊記錄。

這個跟第 7部份差不多,所以方塊的部份就不多說明。

要說明的是,在畫布中,如果讓圖片產生旋轉的話,圖片會依照圖片的中心點來做旋轉,而不是左上角的位置來做旋轉。另外呢,也請大家注意一下角度的部份,12點鐘方向是 90度,3點鐘方向是 0度,6點鐘方向是 -90度,9點鐘方向是 180。


第 9部份的程式方塊記錄。

when ball 1.colliidedwith當球形精靈 1跟別的元件產生碰撞的時候。
這裡加入判斷式,如果 other碰撞到的元件是圖片精靈 1的話。就讓球形精靈的角度反彈出去。這裡的反彈角度的公式是參考維基百科光的反射定律來做的,請自行參考。

為了更好的看到反射的角度,所以只要球形精靈 1一碰到圖片精靈 1的話,就把計時器都停止。


第 10部份的程式方塊記錄。

when ball 1.edge reached,當球形精靈 1碰到 4個邊的時候,呼叫 call ball 1.bounce方塊,讓球從邊緣的地方直接反彈,這裡的反彈的角度,跟光的反射定徑是一樣的。


這次主要是要習慣 app inventor的角度系統,及以反彈角度的寫法。

這次的 aia檔的下載連結如下:
NO_170_Rebound_angle.aia

app inventor交流討論群組連結如下(掃描 QR code或是點擊連結皆可)
https://line.me/ti/g2/Loxwrcc2iNRS5-Qd4SFXxQ?utm_source=invitation&utm_medium=link_copy&utm_campaign=default

參考書籍請見博客來書籍介紹頁面:
手機應用程式設計超簡單 App Inventor 2零基礎入門班
TQC+ 創意App程式設計認證指南
TQC+創意App程式設計認證指南解題秘笈
手機應用程式設計超簡單:App Inventor 2初學特訓班
手機應用程式設計超簡單:App Inventor 2小專題特訓班
手機應用程式設計超簡單:App Inventor 2資料庫專題特訓班

之前介紹過的一些 appinventor的使用記錄,都整理在下面這個頁面上了。
APP INVENTOR學習記錄及資源整理頁面

發佈留言