FPS Microgame 的法老之鷹MOD制作分享

作者:Truly
上次簡單介紹了FPS Microgame的玩法,不知道小伙伴們有沒有制作出自己喜歡的MOD呢?由于在道具里看到有火箭背包,突然聯(lián)想到守望先鋒里的法老之鷹,因此萌生了能不能制作一個法老之鷹MOD的想法。一翻搗鼓之后,成品如下:

接下來我們打開FPS Microgame工程的MainScene場景,開始修改吧~
一、推進背包
1 空格鍵噴氣懸浮
首先從最簡單的部分開始,由于推進背包的腳本已經(jīng)寫好掛在角色身上,我們只需要調(diào)節(jié)參數(shù)就能大約地模擬一下法雞浮空的手感。
(1)解鎖:解鎖之后,游戲開始就能立刻使用火箭背包。
在Hierarchy窗口里選中Player,在Inspector窗口里找到Jetpack腳本,勾選Is Jetpack Unlocked At Start。

(2)調(diào)節(jié)懸浮參數(shù)
找到Durations部分參數(shù),調(diào)節(jié)參數(shù)(僅供參考,小伙伴們可以自行優(yōu)化):
Consume Duration:2,如果一直按著空格鍵,噴氣背包可持續(xù)使用秒數(shù)(可以理解為燃料值)。
Refill Duration Ground:?3,在地面完全填充燃料值所需的秒數(shù)(值越小,填充速度越快)。
Refill Duration In The Air:3,在空中完全填充燃料值所需的秒數(shù)(值越小,填充速度越快)。
Refill Delay:0.2,停用懸浮(放開空格鍵)多久后開始填充燃料。

調(diào)節(jié)完成后可以試下手感哦,沒有制作shift推進之前需要先跳一下才能空格控制浮空。
2 Shift鍵噴射升空
(1)守望先鋒中法雞Shift可以噴射上升一段距離,由于FPS Microgame里設(shè)置Shift是奔跑,且只有治療兵76的Shift才是奔跑,因此需要在腳本中做一些改動,打開PlayerCharacterController腳本:
①聲明并獲取Jetpack變量
public class PlayerCharacterController : MonoBehaviour
{
??? //...
??? Jetpack jetpack;
??? void Start()
??? {
??????? jetpack = GetComponent<Jetpack>();
??????? //...
??? }
}
?
②找到void HandleCharacterMovement(),這是控制角色移動的方法。
③找到聲明bool isSprinting的地方修改為:

這樣設(shè)置之后,在推進背包解鎖的情況下,就不會奔跑了。
(2)編寫推進背包功能
①在Jetpack腳本的Update()中添加以下語句,當按下左Shift鍵的時候,執(zhí)行噴射方法Jet()。
public class Jetpack : MonoBehaviour
{
??? void Update()
??? {
??????? //...
??????? if (Input.GetKeyDown(KeyCode.LeftShift) && isJetpackUnlocked)
??????? {
??????????? Jet();//噴射上升
??????? }
??? }
}
?
②噴射方法
把PlayerCharacterController腳本 中的m_LastTimeJumped?變量修飾符改為public,方便在Jetpack腳本中調(diào)用。

在Jetpack腳本聲明噴射速度jetUpSpeed。
噴射時修改角色豎直向上的速度(characterVelocity的Y方向的值),并且刷新m_LastTimeJumped,免去起飛時的地面檢測,否則會被往地上吸。
public class Jetpack : MonoBehaviour
{
??? //...
??? public float jetUpSpeed=26f;
??? //...
??? public void Jet()
??? {
???? ???m_PlayerCharacterController.m_LastTimeJumped = Time.time;
??????? //抵消向下的速度
??????? var tempV = m_PlayerCharacterController.characterVelocity;
??????? tempV.y = 0;
??????? m_PlayerCharacterController.characterVelocity = tempV;
??????? m_PlayerCharacterController.characterVelocity += Vector3.up * jetUpSpeed;
??? }
}
?
推進背包的主要功能基本就改造完成了,還有冷卻時間之類的細節(jié)追求完美的小伙伴可自行添加~

二、武器制作
1 火箭發(fā)射器
法雞的火箭發(fā)射器是單發(fā)、無擴散的、6發(fā)彈藥,那么我們開始設(shè)置吧~
(1)打開文件夾Assets > FPS > Prefabs > Weapons,找到Weapon_Blaster預(yù)制體,Ctrl+D復(fù)制做好備份。
(2)雙擊Weapon_Blaster進入預(yù)制體編輯模式。
(3)在Inspector窗口中找到Weapon Controller腳本組件,調(diào)節(jié)以下參數(shù):
①Shoot Parameters(射擊參數(shù)):
Delay Between Shot(射擊間隔):0.5,兩槍的最短間隔時間為0.5秒。
Bullet Spread Angle(發(fā)射角度):0,無擴散。
Bullets Per Shot(每次發(fā)射子彈數(shù)):1,每次射1顆子彈。
②Ammo Parameters(彈藥參數(shù)):
Ammo Reload Rate(每秒填充彈藥的速度):6,每秒恢復(fù)6次發(fā)射次數(shù)。
Ammo Reload Delay:0.5,停止開火0.5秒后開始恢復(fù)發(fā)射次數(shù)(換彈)。
Max Ammo(最大彈藥數(shù)):6,表示最多可以連發(fā)6次。

2 火箭彈
武器參數(shù)已經(jīng)調(diào)節(jié)完成,接下來開始設(shè)置火箭彈。
(1)創(chuàng)建火箭彈預(yù)制體
① 在Hierarchy窗口中新建空的GameObject,重命名為Projectile_Rocket,并且Reset?Transform。
② 把Projectile_Rocket拖進文件夾Assets > FPS > Prefabs >?Projectiles,生成預(yù)制體,然后刪除Hierarchy窗口中的Projectile_Rocket。

③?雙擊Projectile_Cookie打開預(yù)制體:
打開文件夾Assets > ModAssets >?SpaceProps。
把Rocket拖動到Hierarchy窗口的Projectile_Rocket下,作為其子對象。

調(diào)節(jié)Rocket的Transform組件參數(shù):Rotation:(90,0,0);?Scale:(0.05,0.05,0.05)。設(shè)置后火箭頭的朝向就是移動的方向。

(2)添加腳本并設(shè)置參數(shù)
通過以上操作便完成了火箭彈的外觀設(shè)置,下邊來要完成腳本上的設(shè)置。
①在Hierarchy窗口中選中Projectile_Rocket,在Inspector面板中搜索并添加添加腳本:
ProjectileBase(發(fā)射物基礎(chǔ)腳本)
ProjectileStandard(用于調(diào)節(jié)子彈的碰撞判定、飛行速度和傷害等)
DamageArea(傷害范圍)
②設(shè)置ProjectileStandard參數(shù)
a 設(shè)置碰撞相關(guān)參數(shù)
在Rocket下新建空物體,命名為Tip,并且移動到火箭頭的位置。

在Rocket下新建空物體,命名為Tail,并且移動到火箭尾的位置。

把Tail拖進ProjectileStandard腳本的Root中進行賦值。
把Tip拖進ProjectileStandard腳本的Tip中進行賦值。
Radius:0.1,把炮彈的檢測半徑設(shè)為0.1。

b 設(shè)置Movement炮彈移動相關(guān)參數(shù)
法雞的火箭彈不是即時命中的子彈,因此飛行速度相對子彈來說較慢。
Speed(飛行速度):30。
Trajectory Correction Distance(軌道修正距離):10,炮彈在飛行前10米的過程中,會漸漸修正到發(fā)射時屏幕中心正方向的軌道上。
c 設(shè)置傷害
Damage:120。
③設(shè)置DamageArea參數(shù)
火箭彈具有濺射傷害,通過DamageArea腳本可以設(shè)置傷害范圍,并且傷害能隨著距離變化。
Area Of Effect Distance:5,傷害范圍半徑。
Damage Ratio Over Distance:點擊右側(cè)圖框,可以通過曲線調(diào)節(jié)傷害,使距離爆炸中心越遠,濺射傷害越低。

把設(shè)置好的Damage Area拖進ProjectileStandard的 Area Of Damage變量框中。

完成以上操作便能進行初步試玩了,可是現(xiàn)在只會投射一個小火箭頭出去,看起來沒有什么威力。

3 添加特效
為了讓火箭彈更加看起來更加有表現(xiàn)力,需要在火箭的尾部添加煙霧效果,并且擊中目標時播放爆炸特效。特效可以自行制作或者在Asset Store里邊找合適的,底部鏈接地址提供本次使用的兩個特效。
雙擊打開Projectile_Rocket預(yù)制體進行編輯:
(1)把煙霧特效VFX_TailSmokeEffect拖到Hierarchy窗口中的Tail節(jié)點下。

(2)找到Projectile Standard腳本,把爆炸特效VFX_DiskRange_Rocket拖到Impact VFX框中。

趕緊試試效果吧,是不是酷炫了好多呢~

結(jié)語:FPS Microgame的法老之鷹MOD制作分享就到這里了,小伙伴們可以充分發(fā)揮自己的想象力,做出各種自己喜歡的功能,例如艾什的延時雷管等等,希望大家玩得愉快。

煙霧和爆炸特效鏈接:https://pan.baidu.com/share/init?surl=OvmZoPdiVXqRj4sl2aERBw
提取碼:78w3
參考資料:
FPS Microgame官方教程:https://learn.unity.com/project/fps-microgame

咱們的游戲開發(fā)交流群也歡迎強勢插入:869551769
希望參與線下游戲開發(fā)學(xué)習(xí)的,歡~~~~~~迎訪問:http://levelpp.com/