Corgi Engine 教學

Author: Kelvin Huang

Corgi Engine 是一套支援 Unity 的遊戲開發工具,可用於開發單機與行動裝置遊戲。

基本上 Corgi Engine 可以提供您製作 2D / 2.5D 動作遊戲所需要的各種功能。

Corgi Engine 線上展示 連結

Corgi Engine 線上文件 連結

 

關卡設計 ( 移動平台、單向平台、樓梯、傳送門 )

玩家角色 ( 基本觀念、自動建立、玩家能力設定)

敵人角色 ( NPC )

角色生成 ( Respawn, Checkpoints 檢查點設定 )

互動物件 ( 破壞物件、推動物件、金幣、百寶箱 )

武器系統 ( 近身攻擊、遠距射擊武器)

背包系統 ( 搜集物品、背包系統設定 )

重力系統 ( 反重力區域、重力點設定)

UI 系統 ( 遊戲 UI 設計 )

AI 系統 ( 敵人 AI 設定 )

輸入設定 ( 虛擬方向鍵、虛擬搖桿、虛擬按鈕)

 

首先建立您的遊戲專案,開啟 Asset Store 資源商店將 Corgi Engine 下載到遊戲專案。

 

Corgi Engine 展示場景

透過展示場景可讓您瞭解 Corgi Engine 的功能與適合製作的遊戲類型。

Mesa2 / Mountains - 經典 2D 平台遊戲範例場景。

Corgi3D - 3D 風格的橫向動作遊戲場景。

 

資源商店的 Sunny Land Forest / Pixel Art Platformer - Village Props 可用於練習。

玩家角色位置在[ Sunny Land Forest Assets > Artwork > Sprites > player ]資料夾,使用Idle動作集放入場景中再製作其他動畫,將玩家角色的動畫分別取名為待機、跑步、跳躍、落下、攀爬、

接著再將新角色命名為Player後,移動到適當位置及縮放為適當大小。

接著在新增的 Character 元件下將 Character Type 修改為 Player 後,按下下方的 AutoBuild Player Character 按鈕,自動為我們建立需要的元件。

Player ID 的設置要啟動[ Edit > Project Sittings > Input ]開啟 InputManager 來設置各個玩家編號所對應的按鈕。

目前按下Play測試,可以進行正常移動,但是要更換目前的動畫控制器,到資料夾[ Asset > CorgiEngine > Corgi2D > Animations > SpaceCorgi ]按下 Ctrl+D 複製一份 SpaceCorgiAnimator 並更改為適當的名稱,並在Asset下創建Animator新資料夾,方便管理。

雙擊新複製的 Animator Controller 會開啟Animator動畫控制器視窗,將Idle待機、Walk走路、Run奔跑、CrouchIdle蹲下待機、jumpAndFall跳躍及落下、Climbing爬梯、ClimbingMove爬梯移動、ClimbingMoveHorizontal水平爬梯移動、jetpacking噴射背包、dying死亡的動畫放入適當的動畫,或依自己的精靈動畫來設置,假使確定沒有的話可將Motion變更為None或刪除動畫。

不過要注意的是 jumpAndFall 是使用混合樹系統來製作的,不過一般來說跳躍只要做一個動畫就行了,所以將我們的跳躍動畫放置在 jumpAndFall 混合樹內,只需要一格,其他的動作可以刪除。

此時按下Play測試,剛剛擺入的動作均正常,不過仍有需要將原角色沒有的動作,或不需要的行為刪除,不然做些沒指定的動作時,角色精靈突然消失是非常奇怪的。
此處只留下待機、走路、跑步、蹲下待機、跳和落下、爬梯、爬梯移動、墜落、噴射背包,死亡的動畫,所以角色的行為只要留下這幾種就行了,其餘元件可以刪除,或依照個人的角色精靈的動畫來設置,下圖是已經將不需要的元件刪除了。

噴射背包的特效預製物件可以將資料夾[ Asset > Corgiengine > Corgi2D > Prefabs > Effects ]中的JetpackFlames預製物件放入正在修改的玩家角色中(或使用CoregiEngine內的角色中的jetpackFlamesEmitter物件),成為玩家角色的子物件,再將JetpackFlames放入玩家角色的Character Jetpack元件下的Particle Emitter欄位中,再調整噴射背包的位置,完成後按下Play測試,並將數值調整至滿意後,將玩家角色存為預製物件,此時可以將預製物件放置在LevelManager物件中的PlayerPregfab欄位下。

按下Play測試後,製作完成的玩家角色已經可以在一開始的時候被生成出來了。

而操作一切正常,但是左上方的圖片還是原來的圖片,既然角色更換了那麼左上方的圖片也要更換。
在Hierarchy場景瀏覽器選取[ UICamera > Canvas > HUD > AvatarHead ]物件後,到 Inspector 屬性編輯器Image元件中,將Soure Image替換成其它圖片即可。

讓玩家角色可以攻擊
要讓玩家可以攻擊,只需將 Character Handle Weapon 元件加回到玩家角色身上,之後再到資料夾[ Asset > CorgiEngine > Demos > Corgi2D > Prefabs > Weapons ] 中選擇一種武器預製物件按下 Ctrl + D 複製一份到自己創鍵的Prefabs的資料夾,並拖曳到 Character Handle Weapon 元件下的Initial Weapon即可,假使在攻擊時有問題,將在敵人的武器設置一併說明。

近戰攻擊的預製物件名稱是 CorgiSword ,不過要製作出相對應的精靈動畫並在Animator動畫師面板上放入近身攻擊的動畫後,從Any State拉連接線至近戰動畫處,點選箭頭,將條件設定為 Melee Start 為 true 即可。
建立怪物角色
可先在 Asset Store 中找尋一個2D角色,或使用自己製作的角色,此處使用Free Pixel Mob來做範例。

在 CorgiEngine 套件中製作敵人和製作角色一樣的迅速、簡單。
匯入完資源,並把精靈動畫製作完成後,再將敵人拖曳到場上並移動、縮放至適當位置及大小後,為敵人增加Character元件。
在Character元件下的Character Type更改為AI後再按下AutoBuild AI Character自動建立AI角色。

完成後再確認敵方身上的元件及層(Layer),已經將必要的元件完成了。

將資料夾[CorgiEngine > Demos > Corgi2D > Animations > AI ]中的blob的AnimatorController動畫控制器按下 Ctrl + D 複製後並更改為適當的名稱,再放入我們自己創鍵的 Animator 資料夾中。
雙擊複製後的 Animator Controller 後,打開 Animator 動畫師面板,將 Idle 和 Walk 更改為自己製作的精靈動畫,再將剛剛編輯完成的 Animator Controller拖曳到編輯中的敵方角色中 Animator 元件的Controller 中,按下Play測試發現敵人角色會進行簡單的來回移動,並且動畫已經可以正常使用了,當玩家角色碰到後會受傷,敵人角色也可以被打倒。

假使想要在玩家角色死掉重置關卡後,希望被打倒的敵人可以再次被生成,可以在敵人身上增加Auto Respawn元件。
和玩家角色一樣,可以將不需要的元件刪除,例如範例中的史萊姆只有放入待機、步行的動畫,所以除了待機、步行之外的操控指令可以考慮刪除或隱藏。

附註:
可以做出敵人感覺到玩家角色在附近並向玩家角色移動,在 AI Walk 元件中,將Walk Behaviour更改為Move On Sight後,再把Move On Sight項目下的View Distance更改為較大的數字後,最後將Stop Distance更改為0後在往下將Player加入到Move On Sight Layer選項中。
按下Play測試,發現接近敵人到一定距離時,敵人才會追過來,並且會攻擊到玩家角色。
敵人的移動速度在Character Horizontal Movement元件中Speed選項中的Walk Speed設置。

製作會射擊的敵人
要會射擊需要再加入兩個元件,為之前刪除的 Character Handle Weapon 元件及AI Shoot On Sight元件。
加入完成後,先將 Character Handle Weapon 元件下的 Initial Weapon 放入子彈的預製物件。
不過在此先用 CorgiEngine 現有的子彈來做範例,將資料夾[ Asset > CorgiEngine > Demos > Corgi2D > Prefabs > Weapons ]中的RobotWeapon預製物件按下 Ctrl + D 複製一份,放在自己創鍵的Prefabes資料夾中,並且更改為適當的名稱(不建議使用同樣的物件,這樣才會有調整的彈性)。
完成後再回到敵人角色,將武器的預製物件放入 Character Handle Weapon 元件下的 Initial Weapon 欄位中。

其他選項先使用預設設置即可。

再到 AI Shoot On Sight 元件中,將 Behaviour 項目下的 Shoot Distance ,此處可以調整敵人角色在多少距離,高度進行調整,最後將Target Layer Mask選項變更為Player即可有發射子彈的效果,調整位置時可以在Play模式下觀看射線的位置再進行調整、輸入。

不過在Play模式測試時,會發現沒有子彈出來,或是子彈出現後馬上消失,因為發射點的高度太接地面,導致子彈剛生出就遭受碰撞而消失,解決方法有兩種。
第一種在 Project 專案瀏覽器點選敵人角色的子彈預製物件,在Inspector屬性編輯器下找到Position項目,修改Weapon Attachment offset發射子彈的位置調整為適當的位置。

第二種就是在敵人角色前面製作一個空物件,再將空物件成為敵人角色的子物件,完成之後再放入敵人角色的 Character Handle Weapon 項目下的 Initial Weapon 欄位中(也可以直接變更子彈的預製物件元件)。

這兩種方法達到的效果都一樣,按下 Play 測試後,確認敵人可正常發射子彈後,將此敵人角色放入Prefabs資料夾存為預製物件。

附註:
武器傷害是固定10點,且還未發現修改數值的地點,所以現階段先使用血量控制來調整遊戲難易度。

建立地形
在CorgiEngine套件中,有很多種現成的地形種類可以選擇,可以先嘗試到資料夾[ Asset > CorgiEngine > Dome > Minimal ]中開啟 FeaturesPlatforms 場景,來了解一下在此有哪些現有的地形是可以使用的。

這裡先將此場地所用到的所有特殊地形來做一番研究。

擁有元件名稱(只包含腳本)

Slope 斜坡 平台 純粹使用 Polygon Collider 2D 來製作一個斜坡效果。
無元件

OneWayPlatform 單向平台 OneWayPlatforms 可以在跳躍時穿透並站上平台,也可以直接從平台上掉落(向下鍵加上跳躍)。
無元件

Jumper 跳躍平台 Default 玩家角色到達此平台時,會被向上彈飛。
Jumper 元件

Rope 和 Grip 繩索 Default Rope繩索由動畫製作,Girp物件是玩家有Grip元件,即可握住繩子最末端。
Grip 擁有 Grip 元件

Checkpoint 確認點 Default 用來紀錄玩家復活的位置。
Check Point 元件

TeleporterGate 傳送門 Default 用來傳送玩家角色到指定位置,不過會經由一個互動才能使用(按下A鍵)。
Teleporter 元件

Water 水 Volumes 可以模擬 2D 水的效果。
CorgiControllerPhysicsVolume2D 元件、 Water 元件、 CharacterJumpOverride元件

Ladder 梯子 Ladders 假使角色擁有Ladder元件時,將可以爬上梯子。
Ladder 元件

LadderBiDirectional 網狀梯 Ladders 如同Ladder一樣,只差在可以水平移動。
Ladder 元件,和梯子差在 Ladder Type 和 Center Character On Ladder 設置不同

Surface Modifier 表面修改器 Platforms 可以做出高、低摩擦力的地面,也可以做出傳送帶的效果。
Surface Modifier 可設置摩擦力及給予施力。

Wind 風 Volumes 可以做出物體或角色在區域內受到風吹的效果。
CorgiControllerPhysicsVolume2D 元件

Pushable 可推動物件 Platforms 可以做出讓玩家角色推動的物品。
Pushable 元件

TeleporterPortal 傳送點 Default 如同傳送門,不過不需要經過互動,碰到就直接執行。
Teleporter 元件,Auto Activation選項有勾選會自動傳送。

FallingPlatform 墜落平台 Platforms 可以做出玩家角色站上平台上,而平台會往下掉落的效果。
Falling Platform 元件

MovingPlatform 移動平台 MovingPlatform 玩家角色站在此平台時會依既有的順序移動,也可用於單項平台製作。
MovingPlatform 元件,可設定Path來讓平台可以依照路線來移動

雖然無關平台,不過場地上有放置 ItemRocketLauncher 及 ItemMachineGun 物件,這兩種是可被簡取的武器,假使玩家角色擁有拿著這些武器的精靈動畫,不妨可以試試。

這場地近乎將所有在CorgiEngine套件中的平台類型介紹完了,接來來要製作這些地形。

前面說過 CorgiEngine 套件在使用時,場地上會有幾個必須物件,假如不想一一添加的話,可以開啟資料夾[ Assets > CorgiEngine > Demos > Minimal ]中的 MinimalLevel 場景來進行編輯,在修改場地之前,建議先另存新檔,不要動到展示場景。

MinimalLevel 場地中已經保留了最低限度的必須物件,我們只須將Level物件下的所有子物件變更及重新編排。

完成後,除了地型之外,其他必要物件還在。

到資料夾[ Assets > CorgiEngine > Demos > Corgi2D > Prefabs > Environment ]中的資料夾來尋找現有的素材,此處選擇資料夾 [ Mesa ] 來當作範例。

因為此處想製作較長的場地當作範例,所以點選Level Manager後在Inspector的Level Manager元件下的Level Bounds將X軸增長。

將 ground 物件放入場景中,並移動到 Level Bounds 中、LevelStart之下,並將ground 物件的Z軸歸0(假使Z軸超出攝影機可以照射的範圍,將不會在Game視圖中被看到)。

目前只有在場地上放一個地板,先按下Play測試看有沒有甚麼問題吧,玩家角色在平台上,無論跳躍、衝刺、下墜都不會穿透地面,一切正常。

測試完成後,先將場地的地形先配置完成吧。

附註: 靜態物件最好是切換成 Static 物件。

先大致做一些場景,可以使用資料夾 [ Assets > CorgiEngine > Demos > Corgi2D > Prefabs > Items ] 及內的預製物件,也可以使用敵人、現有的平台預製物件,來進一步完成自己的場景,並且可以編製作邊測試難度。

接下來要將背景畫面放上去,在資料夾 [ Assets > CorgiEngine > Demos > Corgi2D > Sprites > Envirommet > Mesa ]中找一些山的圖片放置在場景適當的地方,完成後將背景圖片放上去,並且為背景圖片增加 Level Background 元件,這樣就有背景圖片了。

 

Copyright © 2024 CG Digital Corp. All rights reserved.