《守望先锋》的女英雄Pharah拥有独特的火箭跳技能,使用喷射背包的她能在虚拟战场上实施空中控制。本篇文章将教大家学会通过分解和重建组件,在Unity中重建火箭跳的运动系统。
《守望先锋》的女英雄Pharah
本教程将帮助大家熟悉Unity的物理系统,学习在Unity中创建基本的FPS(第一人称射击游戏)角色,实现《守望先锋》中Pharah一样的地面运动,火箭跳和悬浮技能。
工程设置
首先,创建一个空白工程。在Assets资源文件夹下新建Scenes和Scripts两个文件夹,分别存放场景和脚本。
访问Asset Store资源商店下载资源包Standard Assets和 Guns Pack。 Standard Assets提供了环境模型网格,Guns Pack则提供了项目中所需要使用的火箭发射器模型。
Standard Assets
Guns Pack
访问GameObject > Light > Directional Light 为场景中加入方向光。
工程项目中必须有可以使用的地面。访问Assets > Standard Assets > Prototyping > Prefabs中查找可以使用的地面原型。调整地面的位置到原点,并将其定位到希望的坐标位置。到这里工程设置就完成了,现在可以开始下一步创建角色了。
创建角色
在本工程中,我们不打算直接使用Standard Assets中的FPS角色。我们来创建自定义的FPS角色并为其编写脚本。
首先我们来创建Player玩家。点击 GameObject > 3D Object > Capsule,使用胶囊体创建FPS的身体。重置胶囊体的位置到原点,将其放置在地面上方。在Hierarchy层级窗口中,右键点击胶囊体,将胶囊体命名为Player。
Hierarchy层级窗口中拖放将摄像机关联到Player的FPS身体上,将其位置设置为身体的中心,并提升到合适的高度,这就符合角色的FPS摄像机视角了,而它的位置也会随着玩家的位置变化而变化。将Field of View值设置为70。设置方式为选择摄像机后,在其Inspector检视窗口中进行修改。
然后我们来创建RocketLauncher火箭发射器。访问Assets > Guns Pack > Prefabs > RocketLauncher添加该预制体。对RocketLauncher预制体重复以上操作,但将其关联到摄像机而不是Player,重新定位它到合适的位置。
现在,场景和游戏视图应如下图所示。
角色物理系统
为了让我们的角色适用于Unity的物理系统,我们需要添加一些组件来保证它们的正确运作。
现在我们需要建立角色与刚体组件的连接,选择对象Player,在Inspector检视窗口中:使用Add Component > Physics > Rigidbody为其添加刚体组件。
在Inspector检视窗口中确保Player的刚体组件中重力gravity选项勾选。同时锁定Player刚体组件在X,Y,Z三轴上的旋转。
如果此时运行游戏,我们会发现重力作用似乎不明显。有很多办法可以增加作用在刚体上的重力,这次我们直接在游戏对象上使用内建组件Constant Force。请按照以下操作:为Player添加一个名为Constant Force组件,选择Player在Inspector检视窗口中选择:Add Component > Physics > Constant Force。在Constant Force组件检视窗口中,为Y轴方向的力赋一个值。在本教程中,我们用-9.8。注意前面一定要有负号,否则游戏中角色会展翅高飞而不是向下掉落。
这样就完成了创建基础角色。
角色的地面运动
为了赋予角色创建基本的地面运动能力,我们只需一个简短的脚本。
首先为对象Player创建一个C#脚本。在Inspector检视窗口中:选择Add Component > New Script 。语言选择:C#。将脚本命名为P_Controller。
下面为脚本代码与功能注释。
代码非常简单,如下图所示。
现在,我们在Inspector检视窗口中,在Player游戏对象的P_Controller脚本中为p_WalkSpeed赋值。本教程中设置玩家的移动速度为5。
玩家的鼠标动作
现在,我们需要为Player创建一个基本的瞄准系统。
首先为摄像机创建新的C#脚本‘P_Mouse。在Inspector检视窗口中选择摄像机Camera,Add Component > New Script > 语言选择:C #。
下面为脚本代码与功能注释。
代码如下图所示。
在Inspector检视窗口中为Player对象在P_Mouse脚本中的p_MouseLook和p_MouseSmooth赋值。本教程中我们都使用值5。
火箭跳跃和悬浮
制作Pharah火箭跳和悬浮效果看起来难,但实际却可以用简单的脚本加以实现。
首先为对象Player创建新的C#脚本‘‘P_Jump。在Inspector检视窗口中选择游戏对象Player,Add Component > New Script > 语言选择:C #。
下面为脚本代码与功能注释。
代码如下图所示。
在Inspector检视窗口中为对象Player在P_Jump脚本中的p_ForceRJ和p_ForceHover变量赋值,本例程中我们分别使用1000和25。
效果
我们还在环境里添加了一些预制体原型,我们就不在本教程中细致阐述了。运行项目,下面是演示结果。
小结
希望大家通过对本文内容的学习,可以创造出更加优秀的游戏作品。后面我们还会继续分享一些开发中的实用技巧在Unity官方中文社区(unitychina.cn),请保持关注!
网友评论