美文网首页
教程 | 《守望先锋》中火箭跳的实现

教程 | 《守望先锋》中火箭跳的实现

作者: OneMore2018 | 来源:发表于2017-11-04 15:16 被阅读14次

    《守望先锋》的女英雄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),请保持关注!

    相关文章

      网友评论

          本文标题:教程 | 《守望先锋》中火箭跳的实现

          本文链接:https://www.haomeiwen.com/subject/izgfmxtx.html