
App Inventor 角色左右移動 + 跳躍 功能 後篇
本來預計要在這禮拜的週末來更新後篇文章,但今天剛好挪出了一點時間,趕緊趁現在把剩下的講完。
本篇接續上禮拜的前篇教學,將計時器元件全部設定完成後,切換到程式設計。
1. 新增以下變數方塊:

變數 temp 為角色跳起及降落用
變數 磚頭元件 為一個清單變數,妳總共用幾個磚塊,就要放幾個欄位。
繼續新增下面兩個方塊:


繼續新增下面兩個方塊:


設定 計時器_零點三秒 的用意是,讓 App 啟動後過零點三秒再進行初始化設定,如果沒有延遲一點時間而直接進行初始化的話,BlueStacks 模擬器上的磚塊位置會全部走精。
初始化設定副程式:
剛執行時要先把 計時器_零點三秒 給取消,不然它每過零點三秒就會執行一次。
接著要設定磚塊的位置
設定一個區域變數 index,用來當選擇清單變數的索引值,一開始從零開始。
裡面放清單迴圈 i,右邊放 磚塊元件,我的磚塊元件有十六個,所以這個迴圈會跑十六次,i 的值從 磚頭1 開始,每次執行依序換成下一個元件。
再裡面的「呼叫 圖像精靈.移動到指定位置」方塊,在任意圖像精靈的方塊模組裡。
磚塊的長寬都是 32 像素
當迴圈執行第一次時,i 的值為 磚頭1,因為判斷條件不成立,所以會變成 -32 + 32,也就是 0,所以 磚頭1 的 x 值為 0、y 值為畫布高度,它就會跑到最左下角;index 值要加一,會真正用到 index 的地方是從 磚頭2 開始。
接著迴圈跑第二次,i 的值變成 磚頭2,因為判斷條件成立,所以會變成「前一個磚頭的 x 座標」加上 32,前一個的 x 座標是 0,而 0 + 32 = 32,所以 磚頭2 的 x 座標就是 32,後面就以此類推,磚頭3 就是 磚頭2 的x座標(32) + 32 = 64………
最後就是設定瑪利歐的位置
新增左右移動的方塊:


最後是跳躍和降落的方塊:


因為時間有限,所以這裡就不一一說明了!移動和跳躍的程式解析可以參考我之前寫的文章。
這裡要特別講的就是瑪利歐的 y 值,因為條件判斷我不管怎麼設,它最後降落時有很大的機率會跑到磚頭裡,所以我最後再設定一次它的 y 座標以解決以上狀況。
減 66 是因為瑪利歐的高度為 34 像素,加上磚頭的 32 就變成了 66。
那麼這一次的教學就到這邊,這一次比較趕,沒辦法全面詳細的解說,如有不太明白的地方,都可留言詢問。
App 完整程式拼圖

aia 專案程式檔案下載
App 範例執行畫面
如果覺得文章內容還不錯的話,麻煩請幫我點個讚!感謝
可以多點幾次喔~~
第一次點讚需使用 Google 或 Facebook 帳號註冊

