11. 延伸創意應用專題

前面我們已製作了一款遊戲,因為較為簡單的關係,並沒有辦法概括到所有功能,或是不同類型的遊戲實現。

所以這個單元將提出一些有趣的想法與解方,實際帶大家操作一次。希望可以幫助到各位在設計自己的遊戲時,可能會遇到的問題,或是提供不一樣的思考方向。

11.1 學習更多遊戲設計方法

11.1.1 子彈變化

一般的 2D 射擊遊戲除了基礎的玩法之外,還會有強化玩家角色的功能,像是吃到「能量球」玩家的能力會增強,發射的飛彈也會產生變化。子彈變化有很多種,單純傷害增強、變大、變多或是造型改變……等。

我們就用簡單的範例來教大家如何讓角色的子彈變多,或是改變造型。小編會用最簡單的方法來展示,下圖是關於角色發射子彈的積木程式:

我們從變換造型開始,首先複製一組「當 [ A ] 鍵被 [ 按住 ]」,並改成「B鍵」。

接著更改「當 [ B ] 鍵被 [ 按住 ]」那組的發射物圖案,並使用「遊戲模擬器」測試看看效果。

那如果想要散彈效果呢?非常簡單,多新增幾個即可。(=゚Д゚=) ▄︻┻┳━ ·…`.


11.1.2 觸發改變

我們以吃到「漢堡」作為子彈改變的契機,所以我們要新增一個類別為「Food」的漢堡,並調整玩家角色與它的距離。

接著設定「重疊」後,漢堡消失的特效。

以上是大家已經很熟悉的內容,那關鍵的「改變」呢?我們可以用之前提到的概念「變數」來實現。

首先於「當啟動時」內新增一個變數並設定初始數值,變數名稱可以依照自己的喜好設定,通常會取一些符合用途的名稱,可以幫助寫程式時的思路較清晰。因為是改變子彈的造型,並用此表示攻擊力變強了,所以小編取「PowerUP」。

當「變數PowerUP」數值為「0」時,我們希望子彈是原本的造型,當它變成「1」的時候,則是強化過的子彈造型。所以我們在吃掉「漢堡」的積木程式最後,加上「變數PowerUP」設為「1」的積木程式。

最後,我們在「當 [ A ] 鍵被 [ 按住 ]」那邊,加上判斷的條件,並將「當 [ B ] 鍵被 [ 按住 ]」裡的子彈複製過來。

因為「當 [ B ] 鍵被 [ 按住 ]」只是為了我們設計圖案時方便測試,現在將圖案整併到「當 [ A ] 鍵被 [ 按住 ]」之後,「當 [ B ] 鍵被 [ 按住 ]」就可以刪除了。

請於「遊戲模擬器」測試看看子彈有無變化。


11.1.3 跳躍與蹲下

如果是想設計 Google Dino Game 這樣的遊戲,角色需要「跳躍」與「蹲下」的變化,蹲下的部分我們同樣也是改變造型。

只是與子彈不同的是,創造出來的子彈會發射出去,所以我們只是再創造另一個子彈的同時改變造型,但在這裡我們更改的是已經創造好的角色,處理上不太一樣。

對於更換原先角色的造型,我們可以使用「角色」裡有一個「角色 ( mySprite ) 的圖像設為( )」這個積木程式。

變數名稱的部分我們設定為要改變造型的角色名稱,並繪製「蹲下的造型」。我們希望「按下A鍵」時角色蹲下,而「鬆開A鍵」後角色恢復原狀。

所以需要新增另一個「當 [ A ] 鍵被 [ 鬆開 ]」的積木程式,並放入原先的造型。


11.1.4 跳躍的方法

移動的部份我們可以參考「發射物」,發射物之所以會移動,是因為我們調整了它的速度。

同理,若是我們調整了角色的速度,是不是它也能飛上天呢?沒錯!在「角色」裡可以找到變更角色位置、速度的積木程式。

一旦變更速度,若是沒再調整,就會維持變更後的狀態。

所以讓我們使用「暫停毫秒」的積木程式,維持飛天一段時間後,更改成反向的速度,讓它墜落。

為了避免一直狂按「A按鍵」導致動作不如預期,我們加入一個檢查條件,只有當角色速度為「0」時才觸發改變。

OK,現在變成一直往下墜了對不對,因為角色的速度還沒被改成「0」,所以不會停止。

我們需要限制角色碰到地面時,速度得要設為「0」才行,假設還沒跳之前角色的「y座標」為60,我們以「y = 60」作為停在地面,那麼我們可以在遊戲進行的過程中,不斷去檢查角色的「y座標」,只要等於或大過60( 越往下數字越大 ),就讓角色的速度變回「0」,如下圖所示:

這樣角色就可以正常跳躍了。


11.1.5 角色走路的圖樣變化

目前我們的角色在移動時,都是一張圖片平移四方,我們可以透過「進階」>「動畫」選項當中的積木程式讓我們的角色更生動。

按下「圖幀」的選項,可以在右側新增多張圖,我們將用這些圖拼湊出動畫,越多張圖越生動喔~

因為希望按下方向鍵可以讓角色動起來,可以透過下拉式選單將「」鍵改成「任何」鍵,並將動畫積木程式放到裡面,「循環」的選項請「打開」。

這樣移動時角色就會動起來,別忘了也加上「鬆開」時的動作,同樣在「動畫」選項中有個「stop [ 全部 ] animations on ( mySprite )」,可以在您沒有移動時停止角色動畫。

是不是相當生動呢!(´ω)人(´ω)

Leave a comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *