角色控制 ( 牆壁、爬牆 )
角色移動撞到牆壁後,被牆壁卡住無法前進的效果,是角色控制中最不容易理解的,這篇文章將延續「角色控制 ( 跳耀、兩段跳 )」文章,搭配變數、函式、重複、邏輯判斷積木,實作角色會被牆壁卡住,無法前進的效果。
相關文章參考:角色控制 ( 跳耀、兩段跳 )、函式、重複、邏輯判斷。
開啟範例
本篇教學為「角色控制 ( 跳耀、兩段跳 )」一文的延伸,請先開啟範例進行編輯。
積木程式原理
開啟範例後,點擊「場地」的角色造型,額外繪製「天花板」、「斜坡」和「垂直的牆壁」。
接著修改小雞角色的程式,新增一個名為撞牆的函式,勾選「執行完畢再更新畫面」。
編輯撞牆函式內容 ( 因勾選了執行完畢再更新畫面,所以函式的執行過程會很快 ):
- 使用重複十次積木
- 每次重複判斷是否碰到場地,如果碰到,就將角色的 y 座標往上提高 1。
- 這個做法可以判斷是否遇到垂直的牆壁,因為如果是垂直的牆壁,角色 y 座標會加 10。
- 重複十次之後,如果還是碰到場地:
- 讓角色的 x 改變「x 速度 x -1.2」,往反方向移動一點點。
- 讓角色的 y 減少 10,回到原本的高度 ( 因為前面已經被提高 10 )。
- 將 x 速度變數設定為 0,使角色靜止不動。
編輯函式完成後,在左右鍵盤控制角色移動的程式,在最下方執行「撞牆」函式。
完成後,點擊綠旗,就會看到小雞角色在移動時,會被牆壁所阻擋卡住。
修改「站在地上」函式,加入判斷「往上跳撞到牆」的邏輯判斷,避免將往上跳撞到牆當成站在地上,當撞到牆就將 y 改成負值,就會變成往下掉。
最後再新增一個「點擊綠旗」的程式:
- 判斷如果按下「向上」鍵盤時,也按下「向左」或「向右」,表示角色可能正要爬牆或正在空中跳。
- 此時判斷「如果 x 速度變數為 0」,表示角色正撞到牆壁 ( 撞牆函式會在撞牆時,將 x 速度設為 0 )。
- 角色如果撞到牆壁,就讓角色的 y 速度變數為 10 ( 往上移動 )。
- 將「空中」變數設定為 0,如此一來在爬牆時如果往後跳,仍然可以進行兩段跳的動作。
完成效果
完成後,點擊綠旗,就能夠用鍵盤控制小雞角色,角色可以在水平的地板或斜坡移動,移動時會被牆壁卡住,被牆壁卡住時可以爬牆,在空中可以二段跳,如果跳耀時撞到天花板會被擋住。
範例解答
範例解答:角色控制 ( 牆壁、爬牆 )
意見回饋
如果有任何建議或問題,可傳送「意見表單」給我,謝謝~