作者:Truly
上次简单介绍了FPS Microgame的玩法,不知道小伙伴们有没有制作出自己喜欢的MOD呢?由于在道具里看到有火箭背包,突然联想到守望先锋里的法老之鹰,因此萌生了能不能制作一个法老之鹰MOD的想法。一翻捣鼓之后,成品如下:
接下来我们打开FPS Microgame工程的MainScene场景,开始修改吧~
一、推进背包
1 空格键喷气悬浮
首先从最简单的部分开始,由于推进背包的脚本已经写好挂在角色身上,我们只需要调节参数就能大约地模拟一下法鸡浮空的手感。
(1)解锁:解锁之后,游戏开始就能立刻使用火箭背包。
在Hierarchy窗口里选中Player,在Inspector窗口里找到Jetpack脚本,勾选Is Jetpack Unlocked At Start。
(2)调节悬浮参数
找到Durations部分参数,调节参数(仅供参考,小伙伴们可以自行优化):
- Consume Duration:2,如果一直按着空格键,喷气背包可持续使用秒数(可以理解为燃料值)。
- Refill Duration Ground: 3,在地面完全填充燃料值所需的秒数(值越小,填充速度越快)。
- Refill Duration In The Air:3,在空中完全填充燃料值所需的秒数(值越小,填充速度越快)。
- Refill Delay:0.2,停用悬浮(放开空格键)多久后开始填充燃料。
调节完成后可以试下手感哦,没有制作Shift推进之前需要先跳一下才能空格控制浮空。
2 Shift键喷射升空
(1)守望先锋中法鸡Shift可以喷射上升一段距离,由于FPS Microgame里设置Shift是奔跑,且只有治疗兵76的Shift才是奔跑,因此需要在脚本中做一些改动,打开PlayerCharacterController脚本:
①声明并获取Jetpack变量
public class PlayerCharacterController : MonoBehaviour
{
//...
Jetpack Jetpack;
void Start()
{
jetpack = GetComponent<Jetpack>();
//...
}
}
②找到void HandleCharacterMovement(),这是控制角色移动的方法。
③找到声明bool isSprinting的地方修改为:
这样设置之后,在推进背包解锁的情况下,就不会奔跑了。
(2)编写推进背包功能
①在Jetpack脚本的Update()中添加以下语句,当按下左Shift键的时候,执行喷射方法Jet()。
public class Jetpack : MonoBehaviour
{
void Update()
{
//...
if (Input.GetKeyDown(KeyCode.LeftShift) && isJetpackUnlocked)
{
Jet();//喷射上升
}
}
}
②喷射方法
- 把PlayerCharacterController脚本 中的m_LastTimeJumped 变量修饰符改为public,方便在Jetpack脚本中调用。
- 在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;
}
}
推进背包的主要功能基本就改造完成了,还有冷却时间之类的细节追求完美的小伙伴可自行添加~
二、武器制作
1 火箭发射器
法鸡的火箭发射器是单发、无扩散的、6发弹药,那么我们开始设置吧~
(1)打开文件夹Assets > FPS > Prefabs > Weapons,找到Weapon_Blaster预制体,Ctrl D复制做好备份。
(2)双击Weapon_Blaster进入预制体编辑模式。
(3)在Inspector窗口中找到Weapon Controller脚本组件,调节以下参数:
①Shoot Parameters(射击参数):
- Delay Between Shot(射击间隔):0.5,两枪的最短间隔时间为0.5秒。
- Bullet Spread Angle(发射角度):0,无扩散。
- Bullets Per Shot(每次发射子弹数):1,每次射1颗子弹。
②Ammo Parameters(弹药参数):
- Ammo Reload Rate(每秒填充弹药的速度):6,每秒恢复6次发射次数。
- Ammo Reload Delay:0.5,停止开火0.5秒后开始恢复发射次数(换弹)。
- Max Ammo(最大弹药数):6,表示最多可以连发6次。
2 火箭弹
武器参数已经调节完成,接下来开始设置火箭弹。
(1)创建火箭弹预制体
① 在Hierarchy窗口中新建空的GameObject,重命名为Projectile_Rocket,并且Reset Transform。
② 把Projectile_Rocket拖进文件夹Assets > FPS > Prefabs > Projectiles,生成预制体,然后删除Hierarchy窗口中的Projectile_Rocket。
③ 双击Projectile_Cookie打开预制体:
- 打开文件夹Assets > ModAssets > SpaceProps。
- 把Rocket拖动到Hierarchy窗口的Projectile_Rocket下,作为其子对象。
(2)添加脚本并设置参数
通过以上操作便完成了火箭弹的外观设置,下边来要完成脚本上的设置。
①在Hierarchy窗口中选中Projectile_Rocket,在Inspector面板中搜索并添加添加脚本:
- ProjectileBase(发射物基础脚本)
- ProjectileStandard(用于调节子弹的碰撞判定、飞行速度和伤害等)
- DamageArea(伤害范围)
②设置ProjectileStandard参数
a 设置碰撞相关参数
- 在Rocket下新建空物体,命名为Tip,并且移动到火箭头的位置。
- 在Rocket下新建空物体,命名为Tail,并且移动到火箭尾的位置。
- 把Tail拖进ProjectileStandard脚本的Root中进行赋值。
- 把Tip拖进ProjectileStandard脚本的Tip中进行赋值。
- Radius:0.1,把炮弹的检测半径设为0.1。
b 设置Movement炮弹移动相关参数
法鸡的火箭弹不是即时命中的子弹,因此飞行速度相对子弹来说较慢。
- Speed(飞行速度):30。
- Trajectory Correction Distance(轨道修正距离):10,炮弹在飞行前10米的过程中,会渐渐修正到发射时屏幕中心正方向的轨道上。
c 设置伤害
- Damage:120。
③设置DamageArea参数
火箭弹具有溅射伤害,通过DamageArea脚本可以设置伤害范围,并且伤害能随着距离变化。
- Area Of Effect Distance:5,伤害范围半径。
- Damage Ratio Over Distance:点击右侧图框,可以通过曲线调节伤害,使距离爆炸中心越远,溅射伤害越低。
- 把设置好的Damage Area拖进ProjectileStandard的 Area Of Damage变量框中。
完成以上操作便能进行初步试玩了,可是现在只会投射一个小火箭头出去,看起来没有什么威力。
3 添加特效
为了让火箭弹更加看起来更加有表现力,需要在火箭的尾部添加烟雾效果,并且击中目标时播放爆炸特效。特效可以自行制作或者在Asset Store里边找合适的,底部链接地址提供本次使用的两个特效。
双击打开Projectile_Rocket预制体进行编辑:
(1)把烟雾特效VFX_TailSmokeEffect拖到Hierarchy窗口中的Tail节点下。
(2)找到Projectile Standard脚本,把爆炸特效VFX_DiskRange_Rocket拖到Impact VFX框中。
赶紧试试效果吧,是不是酷炫了好多呢~
结语:FPS Microgame的法老之鹰MOD制作分享就到这里了,小伙伴们可以充分发挥自己的想象力,做出各种自己喜欢的功能,例如艾什的延时雷管等等,希望大家玩得愉快。
烟雾和爆炸特效链接:https:///share/init?surl=OvmZoPdiVXqRj4sl2aERBw
提取码:78w3
参考资料:
FPS Microgame官方教程:https://learn.unity.com/project/fps-microgame
咱们的游戏开发交流群也欢迎强势插入:869551769
希望参与线下游戏开发学习的,欢~~~~~~迎访问:http://levelpp.com/
,