Unity 2D 游戏学习笔记(3)

        通过2DGameKit大概了解了2D游戏制作后,我们通过官方教程“Ruby's Adventure”来从无到有的自己实现2D游戏的各种功能。

官方教程网址:Ruby's Adventure:2D 初学者 - Unity Learn

一、创建主角

        首先按照教程指示,创建一个2D项目,将资源包下载后导入,并在官方教程中下载ruby的图像,存入项目文件Art-->Sprites中,用于创建主角。

        创建一个新Scene,按ctrl+s保存到Scenes文件夹中,将原有多余的SampleScene删除。

Unity 2D 游戏学习笔记(3)_第1张图片

         如图,将Texture Type设置为精灵Sprite;Pivot设置为Custom,让角色的参照点在下方中间;然后我们点击Sprite Editor进入编辑界面。

Unity 2D 游戏学习笔记(3)_第2张图片

         如图,红圈内的篮圈为角色的轴心,绿色为碰撞面积,因为要制作伪3D的效果,所以碰撞范围设置为脚底这种效果。设置完后点击右上方的Apply应用。

        随后我们把主角Ruby拖到Scene中。现在Ruby只是一个不能动的精灵,让我们编写一个脚本让他移动。

        在根目录Assets下创建一个新文件夹Scripts用来存放各种脚本,点击Scene中的Ruby,在Inspector中点击下方的Add Component添加Script脚本,命名为RubyControl,默认在根目录Assets下,把他移动至Scripts文件夹中。

        打开RubyControl脚本进行编辑。

Unity 2D 游戏学习笔记(3)_第3张图片

         Start为游戏运行时就需要执行一次的代码,Update内为游戏运行每一帧时需要运行一次的代码。

        注意,类名一定要和脚本名一致,否则导入时会闪退出错。

Unity 2D 游戏学习笔记(3)_第4张图片

        代码和注释如图

 Unity 2D 游戏学习笔记(3)_第5张图片

      

什么是 Vector2 变量?

        变量名称之前的第一个单词 (Vector2) 是变量的类型。类型告诉计算机你要存储什么类型的数据,以便此数据可以在内存中获得适当的空间大小。Vector2 是存储两个数字的数据类型。请注意,在 Inspector 中,Transform 值使用 x 表示水平位置,使用 y 表示垂直位置,使用 z 表示深度。这 3 个数值组成一个坐标。由于此游戏是 2D 游戏,你无需存储 z 轴位置,因此你可以在此处使用 Vector2 来仅存储 x 和 y 位置。

        在带小数点的数字之后,加上一个“f”。这样做就会告诉计算机该数字是浮点数,以便计算机可以正确存储该数字。

        此时运行游戏,会发现ruby一下子跑出视线外了,这是因为电脑运行的帧数过快,这明显不符合游戏的需要,我们来进行更改。

二、角色控制器和键盘输入

        Edit-->Project Settings中找到Input Manager,点开Axes下拉菜单,再点开Horizontal

Unity 2D 游戏学习笔记(3)_第6张图片

调用 GetAxis 函数

        GetAxis 与你在上一教程中遇到的 Start 和 Update 一样也是函数。 此处的区别在于你无需编写函数内部的代码,因为 Unity 工程师已经为你完成此工作。你在脚本中书写此类函数的名称时,就是在调用函数。

提供参数

        圆括号之间的单词被称为参数。向函数提供此信息的目的是指定函数应执行的操作。在此示例中,你希望获得一个轴的值,所以告诉了函数这个轴的名称。你需要将名称放在引号之间,以便编译器知道这是一个单词,而不是一个特殊关键字(例如变量名或类型)。

Unity 2D 游戏学习笔记(3)_第7张图片

经过这些更改,Ruby 的移动方式将如下所述:

  • 如果你按向左键,则轴将为 -1(即移动距离为 position.x + -0.1f;)。Ruby 将向左移动 -0.1。

  • 如果你按向右键,则轴将为 1。Ruby 将向右移动 0.1。

  • 如果没有按下任何键,则轴将为 0 且 Ruby 不会移动(0.1 * 0 等于 0)。

        这时我们已经可以控制Ruby进行左右移动,按照同样的方法实现上下的移动。

Unity 2D 游戏学习笔记(3)_第8张图片

        因为当前Ruby的移动有帧数的影响在内,所以它的移动速度可能忽快忽慢,我们试一试当帧数降低到10,Ruby会受到什么影响。按照官方教程在Start中添加以下代码,添加后,会将帧数控制在10帧。

Unity 2D 游戏学习笔记(3)_第9张图片

百度翻译:

Application:应用程序,targetFrameRate:目标帧率,QualitySettings:质量设置

        这时运行游戏,会发现Ruby又卡又慢,说明它的速度的确收到了帧数的影响。那么应该如何解决这个问题呢?

以单位/秒来限制Ruby的速度

        如图,添加以下代码

        红线所示代码,调用返回的是渲染一帧所用的时间。如果游戏以每秒 10 帧的速度运行,则每帧耗时 0.1 秒。如果游戏以每秒 60 帧的速度运行,则每帧耗时 0.017 秒。如果将移动速度乘以该时间值,则移动速度将以秒表示。这样Ruby的移动速度就固定了。 

        如此,Ruby现在的速度为0.1f/s,我们让他移动的快一些,更改为3f/s。

你可能感兴趣的:(Unity学习,游戏,学习,unity,游戏引擎)