赞
踩
通过2DGameKit大概了解了2D游戏制作后,我们通过官方教程“Ruby's Adventure”来从无到有的自己实现2D游戏的各种功能。
官方教程网址:Ruby's Adventure:2D 初学者 - Unity Learn
首先按照教程指示,创建一个2D项目,将资源包下载后导入,并在官方教程中下载ruby的图像,存入项目文件Art-->Sprites中,用于创建主角。
创建一个新Scene,按ctrl+s保存到Scenes文件夹中,将原有多余的SampleScene删除。
如图,将Texture Type设置为精灵Sprite;Pivot设置为Custom,让角色的参照点在下方中间;然后我们点击Sprite Editor进入编辑界面。
如图,红圈内的篮圈为角色的轴心,绿色为碰撞面积,因为要制作伪3D的效果,所以碰撞范围设置为脚底这种效果。设置完后点击右上方的Apply应用。
随后我们把主角Ruby拖到Scene中。现在Ruby只是一个不能动的精灵,让我们编写一个脚本让他移动。
在根目录Assets下创建一个新文件夹Scripts用来存放各种脚本,点击Scene中的Ruby,在Inspector中点击下方的Add Component添加Script脚本,命名为RubyControl,默认在根目录Assets下,把他移动至Scripts文件夹中。
打开RubyControl脚本进行编辑。
Start为游戏运行时就需要执行一次的代码,Update内为游戏运行每一帧时需要运行一次的代码。
注意,类名一定要和脚本名一致,否则导入时会闪退出错。
代码和注释如图
变量名称之前的第一个单词 (Vector2) 是变量的类型。类型告诉计算机你要存储什么类型的数据,以便此数据可以在内存中获得适当的空间大小。Vector2 是存储两个数字的数据类型。请注意,在 Inspector 中,Transform 值使用 x 表示水平位置,使用 y 表示垂直位置,使用 z 表示深度。这 3 个数值组成一个坐标。由于此游戏是 2D 游戏,你无需存储 z 轴位置,因此你可以在此处使用 Vector2 来仅存储 x 和 y 位置。
在带小数点的数字之后,加上一个“f”。这样做就会告诉计算机该数字是浮点数,以便计算机可以正确存储该数字。
此时运行游戏,会发现ruby一下子跑出视线外了,这是因为电脑运行的帧数过快,这明显不符合游戏的需要,我们来进行更改。
Edit-->Project Settings中找到Input Manager,点开Axes下拉菜单,再点开Horizontal
GetAxis 与你在上一教程中遇到的 Start 和 Update 一样也是函数。 此处的区别在于你无需编写函数内部的代码,因为 Unity 工程师已经为你完成此工作。你在脚本中书写此类函数的名称时,就是在调用函数。
圆括号之间的单词被称为参数。向函数提供此信息的目的是指定函数应执行的操作。在此示例中,你希望获得一个轴的值,所以告诉了函数这个轴的名称。你需要将名称放在引号之间,以便编译器知道这是一个单词,而不是一个特殊关键字(例如变量名或类型)。
经过这些更改,Ruby 的移动方式将如下所述:
如果你按向左键,则轴将为 -1(即移动距离为 position.x + -0.1f;)。Ruby 将向左移动 -0.1。
如果你按向右键,则轴将为 1。Ruby 将向右移动 0.1。
如果没有按下任何键,则轴将为 0 且 Ruby 不会移动(0.1 * 0 等于 0)。
这时我们已经可以控制Ruby进行左右移动,按照同样的方法实现上下的移动。
因为当前Ruby的移动有帧数的影响在内,所以它的移动速度可能忽快忽慢,我们试一试当帧数降低到10,Ruby会受到什么影响。按照官方教程在Start中添加以下代码,添加后,会将帧数控制在10帧。
百度翻译:
Application:应用程序,targetFrameRate:目标帧率,QualitySettings:质量设置
这时运行游戏,会发现Ruby又卡又慢,说明它的速度的确收到了帧数的影响。那么应该如何解决这个问题呢?
如图,添加以下代码
红线所示代码,调用返回的是渲染一帧所用的时间。如果游戏以每秒 10 帧的速度运行,则每帧耗时 0.1 秒。如果游戏以每秒 60 帧的速度运行,则每帧耗时 0.017 秒。如果将移动速度乘以该时间值,则移动速度将以秒表示。这样Ruby的移动速度就固定了。
如此,Ruby现在的速度为0.1f/s,我们让他移动的快一些,更改为3f/s。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。