Action-RPG Starter Kit 教學.CG數位學習網

CG 數位學習網 > Action-RPG Starter Kit 教學



遊戲角色

開啟 [ ActionRPGKit > Prefab > Player ] 資料夾,可以找到資源包收錄的 2 個玩家角色: Heroine 劍士與 Ranger 弓箭手。

 

這些遊戲角色擁有不同功能的元件,您可以自行修改設定,本段教學先說明這些元件的功能,再介紹替換成自已的遊戲角色。

建立一個新的空白場景,將玩家角色 Heroine 或 Ranger 預製物件拖曳到場景,加入地面避免玩家掉落並測試移動。

預設操作是使用方向鍵控制玩家角色前後左右移動,連按 2 次方向鍵可翻滾或奔跑,空白鍵可讓玩家角色跳躍。

滑鼠左鍵是使用一般攻擊,右鍵是使用技能,滑鼠的移動可改變攝影機視角。

 

遊戲角色的腳本元件數量不少,下圖是所有的項目。

Strong Knight...

 

Action-RPG Starter Kit 可以使用傳統的動作與新的 Mecanim 角色動作系統,建議使用後者可以製作複雜的動作控制。內附的動畫控制器已經包含角色的動作流程與動作參數,當您製作自已的角色時,可以選擇內附的角色控制器建立複本,再替換成對應的動作使用。除了節省時間還可以避免設定錯誤,對初學者而言 Action-RPG Starter Kit 角色的動作控制是有點複雜的。

 

Character Motor C (script) 角色控制腳本

 

 

Player Input Controller C (script) 玩家角色控制腳本

 

HpMpRegenC 腳本

 

Save Load C 腳本

遊戲儲存與載入的功能。

 

Skill Window C 腳本

設定技能視窗。

Skill = 下拉選單以Element 0為例,此欄位的參數為技能的代號,更改代號及可更換技能

Skill List Slot = 下拉選單以Element 0為例,16組代號等於技能列表的16組技能,更換代號即可更換技能

 

 

Status Window C 狀態視窗腳本

Text Style / Text Style2 = 文字樣式(維持預設值即可)

Brave Icon = 增加攻擊圖示

Barrier Icon = 增加防禦圖示

Faith Icon = 增加魔法攻擊圖示

Magic Barrier Icon = 增加魔法防禦圖示

Window Rect = 視窗的大小與位置

 

 

Health Bar (Script) 血條與魔法點數腳本

Health Bar (數值圖示)

Max HP Bar = 角色框+總生命魔力框

HP Bar = 血條圖示

MP Bar = 技能圖示

EXP Bar = 經驗值圖示

Max HP Position = 角色框的位置數值

HP Bar Position = 血條的位置

MP Bar Position = 技能的位置

Exp Bar Position = 經驗值的位置

Level Position = 等級的位置

Max Hp Bar Width = 角色框的寬度

Max Hp Bar Height = 角色框的高度

Bar Height = 血條與技能的寬度

EXP Bar Height = 經驗值的高度

Bar Multiply = 血條與技能的長度

 

 

Inventory (script) 背包系統腳本

Item Slot = 下拉選單是以代號控制背包系統內的物品,例如在Element 0上更改代號,背包內的物品也會更著改變

Item Quantity = 以Element 0為例,改變此位置的參數等於改變此物品數量,參數最高99,100=10

Equipment = Size為8等於對應裝備欄的8格,改變代號等於改變物品

Weapon Equip = 改變此參數等於改變現在裝備的武器

Allow Weapon Unequip =

Armor Equip = 改變此參數等於改變玩家角色的裝備。

Allow Armor Unequip =

Weapon =

Player = 場景角色

Database = 物品資料庫(預設值 ItemsDatabase)

Fist Prefab = (預設值 MeleePrefab 近距離武器)

Cash = 玩家持有的金錢

Window Rect = 視窗的的大小與位置

 

Quest Stat (Script)

Quest Progress = 任預進度。

以Element 1為例,假設在下方Quest Slot的任務代號中有代號1的任務正在執行,此時如果再Element 1中的參數設定為10就等於已經殺死10隻怪物或者獲得10個物品,依此類推,在下方Quest Slot任務代號隨便一欄輸入2,此時在Element 2中就能更改任務代號2的完成度。

Quest Slot = 任務代號,玩家最多可以同時接受五個任務。

 

 

Player Input Controller(Script) 玩家輸入控制器

Walk Speed = 走路的速度 / Sprint Speed = 衝刺的速度

Can Sprint = 設定玩家角色是否可以衝剌

Stamina Gauge = 體力量表 / Stamina Border = 體力量表邊框

Max Stamina = 最大體力(衝刺時會消耗體力)

Stamina = 目前體力

Dodge Roll Setting = 閃避翻滾設定

 

 

Show Tip (Script) 顯示提示說明

Tip = 遊戲玩法的提示說明,使用背景透明的 PNG 圖片。

 

Underwater Controller (Script) 水中操作的控制腳本

此腳本在水中會自動與一般角色控制器切換,無須手動開啟

Swim Speed = 游泳速率

Swim Idle = 水中等待時的動畫

Swim Forward = 水中前進動畫 / Swim Back = 水中倒退動畫

Swim Left = 水中左轉動畫 / Swim Right = 水中右轉

Animation Speed = 動畫播放速率

 

 

Status C 腳本

玩家狀態

 

Attack Trigger C 攻擊觸發腳本

Main Model = 子物件的角色模型(設定錯誤將導致角色無法控制)

Attack Point = 攻擊點 / Attack Prefab = 攻擊預製物件(玩家攻擊時動態生成的物件,用於判定攻擊位置)

While Attack 設定玩家角色攻擊時的移動,提供 3 選項:

Melee Fwd 攻擊時自動前進(預設狀態)
Immobile 攻擊時位置不動
Walk Free 攻擊時可控制移動

Skill Prefab = 使用技能的預製物件

Freeze = 凍結角色的攻擊能力

Skill Icon Size = 技能圖示大小(位於畫面右下角)

Attack Speed = 攻擊速度,所有負值的攻擊速度都一樣且不會播完所有攻擊動畫,設定為 0 或負值的攻擊速率不會差太多,但會播完所有攻擊動畫

Atk Delay 1 = 攻擊延遲,實測後與攻擊速度是差不多的東西,如果攻擊速度很慢但攻擊延遲很快也沒用

skill Delay = 技能延遲,與攻擊速度及延遲是差不多的東西,負值也差不多等於0

Attack Combo 連續攻擊(預設 5 Combo )

Attack Animation = 攻擊動畫播放速度

Skill Animation = 技能動畫

Skill Animation Speed = 技能動畫速率

Mana Cost = 消耗的技能點數

Maincam = 進入遊戲時動態生成的攝影機(預設的會被刪除)

Attack point Prefab = 攻擊點預製物件

Aim Icon = 瞄準點圖示

Aim Icon Size = 瞄準點大小

 

 

Action-RPG Starter Kit 換角

本段教學使用免費的 Space Robot Kyle 與 Unity-Chan 角色講解,匯入角色資源包。

建立一個新場景,開啟 [ Robot Kyle > Model ] 資料夾,選取 Robot Kyle 後將 Animation Type 改為 Humanoid 。★

將修改後的 Robot Kyle 拖曳到場景,並加入地板以便稍後測試角色的動作。

選取場景的 Robot Kyle 執行 [ Component > Action-RPG(C#) > Create Player(Mecanim) ] 將會自動增加許多腳本元件,

調整 Character Controller 的碰撞器,現階段已經可以使用鍵盤控制移動角色,但沒有動作。如果移動時發生不正常跳躍的情況,可將碰撞器的位置向上微調,或是將角色向上移動。

另一個需要解決的問題是攻擊後卡住,因為目前尚未指定動畫控制器。

Animator 元件下的 Controller 可先借用 HeroineController 使用,當然動作很怪,因為這是女角色的動作, 可直接複製 再替換動作即可。

此階段控制角色的移動已有動作,但攻擊仍會卡住,因為Attack Trigger C 腳本元件需要修改參數。設定步驟如下:

Main Model = 拖曳場景中的 Robot Kyle 到此欄位。

Attack Point = 執行 Create Empty Child建立新的空物件,重新命名、調整位置★

Use Mecanim = True (預設是未勾選的狀態)

Mecanim Setting > Use Set Trigger Atk = True

現階段仍無攻擊動作,但會動態生成攻擊用的 Melee(Clone) 物件。

選取 Robot Kyle 使用的動畫控制器,雙擊開啟 Animator 視窗,進入 Sowrds 動作狀態,使用連線將 attack1 > 2 > 3 > 4 > 5 串連起來。選取這些連線,設定:

Has Exit Time = False(取消勾選,預設值 = True)。

Conditions = attack

現階段按 Play 測試,已經可以攻擊,但無法使用連續攻擊,因為動作的時間過短,將每個動畫的 Speed 減少(例如 0.5)。如果還是無法連續攻擊,選取場景的Robot Kyle 再設定 Attack Trigger C > Atk Delay 1 = 0.2(預設值 0.1)。

加入武器。

製作玩家角色倒地的預製物件,再一次將 Robot Kyle.fbx 拖曳到場景,選取後執行 [ GameObject > 3D Object > Ragdoll ] 設定對應身

Robot Kyle 的 Ragdoll 設定↓

 

Unity-chan 的 Ragdoll 設定↓

 

重新命名為「Robot Kyle Death」,轉成預製物件後,即可刪除場景上的原物件。

選取場景的 Robot Kyle 後,將剛才新增的 Robot Kyle Death 拖曳到 Status C > Death Body 欄位。

開啟 [ ActionRPGKit > Prefabs > Monster ] 資料夾,選擇一個敵人角色的預製物件拖曳到場景,按下 Play 測試遊戲。確認可攻擊敵人,可被敵人攻擊倒地。

此階段並不會出現復活,選取剛才製作的 Robot Kyle Death 預製物件,套用 Game Over C 腳本元件,但是 Player 欄位目前是未指定的,按下 Play 測試遊戲,倒地重試後將會出現 UnassignedReferenceException: The variable player of GameOverC has not been assigned. 錯誤訊息。解決步驟如下:

選取場景的 Robot Kyle 後,轉存成預製物件,然後再選取 Robot Kyle Death 預製物件,將剛才新增的 Robot Kyle 預製物件拖曳到 Robot Kyle Death 的 Player 欄位。

即可刪除場景的原物件。

★目前問題,復活後遊戲角色動態生成的位置,是最後的存檔點,位置可能不是我們想要的,或者沒有站在地面而掉落。

★執行 [ GameObject > Create Empty ] 建立一個空物件,可重新命名為「Spawn Point」代表重生點,移到適當位置,增加 Spawn Player C 腳本元件,然後將剛才建立的 Robot Kyle 預製物件拖曳到 Player 欄位。★注意!此步驟似乎不是真正解決問題的關鍵。

 

製作選角畫面的角色模型

製作選角畫面上呈現的角色模型,再一次將 Robot Kyle.fbx 拖曳到場景,設定 Animator > Controller = HeroineController 需要時也可以自行製作。

重新命名,轉存成預製物件,刪除場景上的原物件。