游戏开发-如何在 Unity3D 中编写基于物理的角色控制器
角色控制器可以帮助您在游戏中实现简单的运动物理。
您可以从多个角度接近 Unity3D 角色控制器。如果您使用具有强大类和函数的库,创建基于物理的角色控制器可能是开始游戏开发的一个有趣的地方。
第 1 步:使用玩家和地形对象创建场景
打开 Unity 并创建新项目后,您可以开始向场景添加几个对象。您可以按照您喜欢的任何顺序创建这些对象,但要小心确保使用正确的设置。虽然这个项目很基础,但它是开始使用 Unity的好方法。
地形的 3D 平面对象
添加到场景中的第一个对象是平面。在层次结构窗格内右键单击,将鼠标悬停在3D 对象上,然后从列表中选择平面。您可以调整平面的大小以提供更大的测试区域,但您无需对其进行任何其他操作。
立方体对象播放器模型
接下来,是时候在场景中添加一个立方体作为玩家模型了。在层次结构窗格内右键单击,将鼠标悬停在3D Object上,然后从下拉菜单中选择Cube 。放置新立方体,使其位于您还添加的平面上方。您还需要添加一个刚体组件,使立方体成为一个物理对象。
选择立方体并转到检查器。单击窗格底部的添加组件,搜索刚体,并在出现时从列表中选择刚体。勾选使用重力复选框并保留其余设置不变。
您可以在线找到免费的 Unity 资产来美化您的项目。
第三人称相机
您的场景应该已经有一个可以用作第三人称相机的相机。将相机放置在立方体上方舒适的第三人称位置。在将相机拖放到立方体上以创建父子关系之前,请转到层次结构窗格。完成此操作后,相机将自动跟随您的立方体。
快速测试
虽然您的场景还没有任何代码,但您可以测试到目前为止所做的工作。单击屏幕顶部的“播放”按钮以加载您的游戏。您应该看到立方体下落并落在平面的顶部,并且相机应该跟随立方体下落。
第 2 步:设置 C# 文件
现在是创建 C# 文件的时候了,这样您就可以开始编写一些动作了。转到“项目”部分,右键单击,将鼠标悬停在“创建”上,然后从列表中选择“文件夹”。将文件夹命名为 Scripts 或类似名称。
在新文件夹中导航并重复该过程,但从列表中选择 C# 脚本。您可以为该文件指定任何名称,但这也将是其中的主要函数的名称。确保你的新 C# 看起来像这样。
第 3 步:使用 C# 创建具有速度的前进和后退运动
在脚本文件中添加函数之前,声明一些公共变量。首先是一个用于存储玩家模型的刚体。同时声明一个浮点数来跟踪移动速度。这些变量在主类中,在任何函数之外。
现在您可以添加一些代码来让您的播放器模型移动。这段代码很好,也很简单;您只需要两个 if 语句,一个用于向前移动,一个用于向后移动。您可以使用 Input.GetKey 确定何时按下某个键。在这种情况下,您正在寻找 W 和 S 键的按下。
按下这些键中的任何一个都会使用 rigidbody.AddForce 向立方体刚体添加一个力。您可以通过将其 Z 轴位置 (transform.forward) 乘以速度变量来计算所加力的方向和速度。没有可用于向后运动的 transform.backward 类,但这可以通过将 transform.forward 乘以 -1 来实现。
保存 C# 文件并导航回 Unity。在“项目”窗格中找到脚本并将其拖放到层次结构中的角色模型立方体上,以将脚本分配给该对象。当您选择 Cube 时,您应该会在 Inspector 窗格中看到该脚本作为一个组件。在刚体变量框内单击并选择立方体的刚体。
您现在可以使用 Play 按钮启动游戏并测试您的代码。可是等等!有问题;您的立方体将滚动而不是直线向前移动。返回立方体的检查器,找到 Rigidbody 组件,并勾选方框以在再次启动游戏之前冻结 X 轴和 Z 轴上的旋转。现在它应该工作了。
第 4 步:使用 C# 创建带扭矩的左转和右转
与前后移动不同,转动 Cube 播放器模型需要一种称为扭矩的力。为此,您需要另一个变量:一个用于分配扭矩值的公共浮点数。
在此脚本中向左和向右转的代码与用于向前和向后移动的代码也非常相似。每个方向都有一个if语句,用于查找按下 D 键(右转)或 A 键(左转)。
每个 if 语句的第一步是使用 Input.GetAxis 方法确定转弯方向并将结果分配给浮点变量。在此之后,使用 rigidbody.AddTorque 通过乘以立方体的扭矩、转动和 Z 轴,将旋转力应用于立方体角色模型。
第五步:使用C#编程跳转
作为这个 Unity 角色控制器的最后一个元素,是时候创建你的跳跃了。考虑到跳跃必须具有有限的高度,因此创建跳跃比您使用过的其他基本控件更复杂。首先添加一个私有布尔变量来跟踪玩家是否在跳跃。
第 6 步:测试您的角色控制器代码
保存您的文件并返回 Unity 以测试您编写的代码。与大多数编译器一样,Unity 会提供有关代码错误和其他问题的信息,以便更轻松地查看您可能需要更改的内容。您可以在我们的GitHub页面上查看此项目的完整代码。
创建 Unity 角色控制器
在 Unity 中创建角色控制器时,您可以选择多种不同的方法。使用物理学是一种选择,但如果需要,您也可以使用内置的角色控制器系统。
像这样探索不同的选项是了解 Unity 等工具的好方法。