Unity UFPS 教學

FPS 射擊遊戲是許多玩家喜愛的遊戲類型,例如《戰地風雲》、《全境封鎖》系列,行動裝置的《DEAD TRIGGER》、《UNKILLED》,甚至是經典射擊遊戲 《毀滅戰士》 也推出複刻版 DOOM Classic 遊戲。

UFPS : Ultimate FPS 是一套支援 Unity 遊戲引擎的 FPS 遊戲製作套件,可協助您快速開發第一人稱射擊遊戲,它提供遊戲必要的元素,包括角色控制器、武器系統(槍枝與炸彈)、補給品(補血與彈藥)、地形(移動平台)與角色的重生系統等。

UFPS 官方教學文件

http://visionpunk.com/hub/assets/ufps/manual/

UFPS 獲得使用者的壓倒性 5 顆星評價,官方提供 Mobile Add-on for UFPS 行動裝置遊戲開發套件與 UFPS Photon Multiplayer Starter Kit 多人線上遊戲開發套件,並可搭配第三方外掛程式共同使用。

前往資源商店搜尋 UFPS 下載到專案。

 

將 UFPS 資源包下載並匯入所有項目,本教學將使用 Unity 提供的 Prototyping 資源包,也可一併匯入專案。

 

02. UFPS 範例場景

03. UFPS 預製物件 玩家角色

04. UFPS 預製物件 威脅事物

05. UFPS 預製物件 玩家武器

 

09. Mobile Add-on for UFPS 教學

10. UFPS Photon Multiplayer Starter Kit 教學

 

基本設置(遊戲角色與攝影機)

 

建立遊戲場景中的地板,調整到適當的大小,並加上地板貼圖。

刪除場景中的預設攝影機,避免進入遊戲時出現錯誤的情況。

 

 

加入玩家使用的武器

1. 選取 Player 玩家角色,搜尋 vp_FP Weapon Handler 腳本並套用到玩家角色。

2. 建立一個新的空物件,重新命名為適當名稱 (例如 1Pistol 手槍 ),前面的數字對應武器切換順序。

3. 搜尋 vp_FP Weapon 腳本並套用到剛才建立的 1Pistol 物件,用於設定手槍的外觀與功能。

4. 展開 Vp_FP Weapon 元件的 Rendering 欄位,然後並將手槍的預製物件拖曳到1st Person Weapon (第一人稱觀點的武器)欄位。

您可以在 [ UFPS > Base > Content > Prefabs > Weapons ] 資料夾找到 UFPS 提供的預製物件。

包括: Pistol 自動手槍、Revolver 左輪手槍、Machinegun 機槍、Mace 流星槌。

5. 在 Hierarchy 視窗將 1Pistol 拖曳到 Camera 上,使手槍成為攝影機的子物件,將能夠隨著攝影機轉動。

6. 將 1Pistol 的座標位置重設為 (0, 0, 0),將會讓手槍的位置與父物件攝影機相同,稍後可調整武器的位置。

7. 按下 Play 測試遊戲,使用鍵盤 Q 或 E 鍵可切換武器,玩家移動或跳躍時手握的槍會呈現自然晃動的效果。

8. 玩家角色若能夠使用多種武器,重複以上的步驟加入更多武器,命名時請加上數字以控制武器切換順序。

 

調整武器位置與角度

1. 按下 Play 測試遊戲,注意 UFPS 可以在 Play 模式調整,並將參數儲存到檔案。

2. 透過 Vp_Fp Weapon 元件的 Position Springs 調整 Offset 設定武器的位置。

3. 透過 Vp_Fp Weapon 元件的 Rotation Springs 調整 Offset 設定武器的角度。

4. 武器調整到適當的位置與方向,可在下方的 Preset 按下 Save 按鈕,將設定的數值儲存到 .txt 文字檔。

5. 按下 Play 回到編輯模式,同樣在此武器的 Vp_FPWeapon 元件下方的 Preset 按下 Load 按鈕,選擇剛才的存檔,即可載入設定數值。

 

 

製作武器相機

當玩家走近場景中的牆壁或其他物件時,武器可能會因為位置重疊而被部份遮蔽,這是真實世界是不會發生的,可以使用 Weapon Camera(武器相機)來避免這個情況。雖然此功能可以選擇是否使用,但是在部份的情況是建議使用武器相機。

1. 建立一個新的空物件,重新命名為「WeaponCamera」,拖曳到 Camera 使其成為攝影機的子物件。

2. 將 WeaponCamera 武器相機的位置重置為(0,0,0),使其與父物件的位置相同。

3. 按下 Add Component 按鈕,選擇 [ Rendering > Camera ] 套用 Camera 攝影機元件。

武器相機只需要製作一個即可,不需要為每一個武器分別製作。

 

加入子彈

1. 選取剛才製作的 1Pistaol 手槍物件,搜尋 vp_FP Weapon Shooter 腳本並套用到武器物件。

2. 展開 Vp_FP Weapon Shooter 元件上的 Projectile 子彈,搜尋 PistolBullet 並拖曳到 Prefab 欄位。

3. 展開 Vp_FP Weapon Shooter 元件上的 Sound 設定項目,將 PistolFire、PistolDryFire 音效拖曳到對應的射擊音效。

 

4. 按下 Play 測試遊戲,按滑鼠左鍵即可讓槍射出子彈,音效,槍的後座力產生振動。

5. 槍口火花

展開 Vp_FP Weapon Shooter 的 Muzzle Flash 設定項目。

將 PistolMuzzleFlash 拖曳到 Muzzle Flash 下的 Prefab 預製物件欄位。

6. 展開 Vp_FP Weapon Shooter 的 Shell 設定項目,可以設定槍枝射擊時彈出的彈殼。

將 PistolShell 拖曳到 Prefab 預製物件欄位,試玩遊戲,調整 Scale 縮放彈殼的大小。

7. 射擊準星,沒有準星不容易瞄準。

選擇武器(例如 Pistol ),搜尋 Vp_Simple Crosshair 腳本並套用到武器上。

將 Crosshair 拖曳到 Image Crosshair 欄位。注意每個武器需要各別套用。

8. 如果已經製作其他射擊類武器,請透過以上步驟為每個武器加入子彈、射擊音效、槍口火花、射擊準星。

 

調整射擊的後座力

按下 Play 測試遊戲,槍技射擊的後座力可能需要調整。

  1. 選擇武器物件,並打開 vp_FP Weapon 元件的 Position Springs,並調整數值 Spring2 Stiffn : 0.2、Spring2 Damp :0.55
  2. 打開 Vp_FPWeapon 元件的Rotation Springs,並調整數值
    Spring Stiffness = 0.01
    Spring Damping = 1
    Spring2 Stiffn = 0.95
    Spring2 Damp = 0.8
  3. 透過 Play 畫面確認效果,以上數值僅供參考,需要自行調整到理想的效果。
  4. 確認效果時在 Vp_FP Weapon元件底部的 Preset 按下 Save 按鈕。
  5. 按下 Play 按鈕回到編輯模式,再到底下的 Preset 按下 Load 按鈕載入剛才的設定。

 

玩家使用武器的動作調整

UFPS 對於玩家使用武器的動作可以進行細部的調整,以符合真實的情境。

Retraction (縮回)

玩家角色接近牆壁時,手臂會自然縮回,避免與武器產生碰撞。

Distance 設定縮回的距離。
Offset: 該參數將相對於武器水平或垂直地偏移縮回射線。Retraction打開時,將在編輯視圖中繪製raycast光線。如果光線不相交,則光線將變黃,如果相交,則為紅色。為獲得最佳效果,請調整Offset 參數。
Relax Speed : 用來調整武器,回到正常位置的速度,數值越高越快。

 

向下看時手部的動作。

Vp_FP Weapon Look Down

勾選 Adjust for lookdown

 

 

玩家角色的設定

透過遊戲角色的 Vp_FP Controller 腳本進行移動的設定。

開啟 Motor 設定項目,設定玩家角色的移動行為。

Acceletation(加速):  移動時,每一幀都加入控制器的世界移動速度。
Damping(阻力):  值越高控制器移動速度越慢,若設定值為 0 時移動將會像溜冰般無阻力。
Air Speed (在空中的移動速度):  若設定值為 0 時玩家在空中無法移動,設定值為1時可以在空中快速移動,例如跳傘仍可控制方向的效果。
Slope Speed Up(上坡速度): “1”值向上傾斜的速度保持與平面大致相同。小於或大於”1”值控制器分別上斜坡減速/加速。
Slope Speed Down(下坡速度): “1”值向下傾斜的速度保持與平面大致相同。小於或大於”1”值控制器分別下斜坡減速/加速。
# 將Slope Speed Up設置為0.5,將Slope Speed Down設置為1.5。這將減慢控制器上坡的速度,並使其下坡的速度提升。

Free fly (自由飛翔): 啟動時玩家可以飄浮在空中,稍後說明設定方法。

 

開啟 Jump 設定項目,設定玩家角色的跳躍行為。

Force(力量): 當玩家跳躍時,在單個幀中添加到控制器的上升量。跳躍的高度稍微受到重力影響。
Force Damping(力量阻力): 跳躍力消耗的速度。
Force(Hold): 跳躍按鈕按住不放時,每幀增加的力量。(長跳)
Force Damping(Hold): 長跳跳躍力消耗的速度。

 

開啟 Physics 設定項目,設定玩家角色的物理行為。

Force Damping : 使玩家受外部的力量,例如 ThrownBomb 爆炸的衝擊。”1”值完全不受影響,”0”值表示控制器將受到極大影響。
Push Mode:  Simplified和kinetic,要呈現較真實的物理反應請選擇Kinetic。
Push Force: 當推動物體(剛體)時,控制器施加的力道。控制器Push Force :10、物體Mass : 11 則物體不會動。
Gravity Modifier : 控制器將受到重力的影響,值越高移動感覺越笨重。Unity Physics Manager的Physics.Gravity值也影響對象。
Slope Slide Limit(斜坡滑動限制): 斜坡在指定角度以上時,控制器將開始滑動。
Slope Slidiness(滑動): 數值越大爬坡越難爬(前提是要會滑動,要看Slope Slide Limit值怎麼設定)。
Wall Bounce(牆反彈): 使角色控制器在外部力量(例如爆炸)移動時彈起,給牆壁碰撞帶來稍微更有感覺(注意,它不適用於常規玩家的移動)。
Wall friction(牆摩擦): 此功能決定了外部力量(如爆炸)移動時,控制器應該滑動多少表面(注意,它不適用於常規玩家移動)。
Crouch height modifty(伕蹲高度): 數值越大,蹲下的高度越高。

Has Collision trigger(有碰撞): 碰撞觸發 是用於與剛體對象。在啟動時生成一個子物件,並且包含一個包圍的膠囊碰撞器觸發器。

 

 

Free Fly 自由飛翔 - 啟動時玩家可以飄浮在空中,需要同時降低 Vp_FPController > Physics > Gravity Modifider 的數值,例如設為 0 時等於無重力狀態。

玩家角色在自由飛翔模式,按下空白鍵跳起後可以停留在空中,使用鍵盤 C 可下降。

 

Vp_FP Controller Physics

Push Mode 選擇 Kinetic 模式。

 

 

主動防衛槍,玩家進入範圍,自動開槍射擊。

Vp_SecurityCamTurret

 

 

選取需要加上彈痕的物件,套用 Vp_Surface Identifier 腳本。

選擇不同的表面類型,射擊時也會產生不同的結果。

 

 

玩家受攻擊時,沒有任何損傷的效果。選取玩家角色,套用 Vp_Simple HUD 腳本。

Font = Aldrich-Regular

Health Multiplier = 1

 

 

 

玩家重生

玩家角色套用 Vp_Player Respawner 腳本。

將會在玩家「倒下」的位置動態生成預製物件。

 

受傷

玩家角色套用 Vp_Pain HUD 腳本。

 

 

玩家角色套用 Vp_Player Inventory 腳本,套用後才能撿拾物品。

 

此外,可以被玩家撿拾的物品需要套用 Vp_Item Pickup 腳本,注意是場景上的物品(例如武器或彈匣),而不是玩家手上的武器。

PickupPistol

 

 

選取玩家持有的武器。

套用 Vp_Item Identifier 腳本。

選擇 Pistol01 物件類型。

 

補充彈藥

子彈射擊,裝填。

Vp_FP Weapon Reloader

 

增加槍的射擊準心

玩家使用遊戲中的槍枝射擊時,如果沒有準星不容易瞄準目標,可以透過以步驟加入射擊準星。

  1. 在Player物件上添加 Vp_Simple crosshair 腳本。
  2. 將Crosshair 貼圖拖曳到Vp_Simple crosshair 腳本的Image Crosshair的欄位。
  3. 按下Play測試遊戲,畫面上將會出現槍的射擊準心。

選擇武器(例如 Pistol ),搜尋Vp_Simple Crosshair 腳本並套用到武器上。

將 Crosshair 拖曳到 Image Crosshair 欄位。注意每個武器需要各別套用。