4.4.3 主要制作步骤

4.4.3 主要制作步骤

“超级跑酷”小游戏的制作步骤如下:

1.场景搭建

由于本项目旨在展示Unity制作游戏的综合应用方法,因此在场景搭建上没有太多修饰,以轻量化和简易为主。游戏对象主要包括两种:Cube和Sphere。由于障碍物会多次在场景中运用,所以可将其制作为预制体。方法是在Project面板中新建Prefabs文件夹,然后将游戏对象Cube拖至其中,并更名为“Barrier”。预制体的好处是可以把修改结果直接自动运用到所有对其的引用中,而不用多次反复修改,如图4.14所示。

图4.14 制作Barrier预制体

为了适当增加场景的美观性,可以将Skybox(天空盒)更换成自己喜欢的样式。方法如下:

(1)导入天空盒资源包。Unity的Asset Store中提供了大量的Skybox资源,读者可根据需要下载使用。

(2)在菜单栏中选择【Window】|【Rendering】|【Lighting】,在面板中选择Environment选项卡,单击Skybox Material选项后的圆形按钮,选择一个天空盒材质,如图4.15所示。

图4.15 选择天空盒材质

2.制作小球的移动控制

新建脚本“Player Controller.cs”,挂载到小球对象“Player”上,编写脚本代码如下:

在Unity的C#脚本中定义的public类型的字段变量,都可以在Inspector面板中显示,便于用户自行调整。因此上述代码加载到Unity之后,可以看见Player对象的Player.Controller组件中会显示出speed和turnSpeed两个变量。当用户按下A键或向左箭头时,Input.Get Axis()方法的返回值为-1,当按下D键或向右剪头时,此方法的返回值为1。上述Update()方法包括两方面作用:一是根据用户输入的按键,实现小球向左或向右移动;二是实现当小球超出跑道边界时的自然下落;三是当小球的纵向位置低于-20时,游戏中止。

3.关卡的触发

在这个游戏中,判断物体之间是否发生了触碰非常重要,这也是大部分游戏都需要用到的功能。在Unity中,使用触发器结合On Trigger Enter()方法可以很方便地实现碰撞检测。

选中障碍物“Barrier”的预制体,在其Box Collider中勾选选项“Is Trigger”。选中小球对象“Player”,添加Rigidbody(刚体)组件,勾选其中的“Is Kinematic”(动力学的)。

在Barrier预制体上新建脚本组件“Barrier”,双击打开脚本。删除原有的Update()方法,增加代码如下:

这段代码的作用是:当检测到有物体与Barrier发生触碰时,判断此物体的名称,如果为“Player”(即小球),则游戏中止。

4.Success(终点)的触发

当小球顺利避开所有障碍物且没有下坠,则游戏成功。如果不作任何设置,则小球会持续一直向前行,因此需要设置一个碰撞区域检测小球是否进入其中,如果小球触碰到此区域,则意味着游戏成功,同时在界面上显示成功的UI。因此这里包括三部分:UI的制作、终点检测区的制作、终点区的碰撞检测和UI的显示/隐藏。

(1)UI的制作

在Hierarchy面板中单击右键,选择新建【UI】|【Panel】,然后在Panel上单击右键,选择新建【UI】|【Legacy】|【Text】。设置Text的Width、Height为1000、500。在Text组件的文本框中输入:恭喜!成功通关!调整字号(Font Size)为56,设置Alignment为水平居中和垂直居中,如图4.16所示。

图4.16 通关UI效果

(2)终点检测区的制作

创建一个Cube,更名为“Success”,将Scale设置为:X=8,Y=1,Z=4。由于这个Cube仅是作为碰撞检测使用,不需要显示,所以将其Mesh Renderer组件取消勾选,即可设置为透明。

(3)终点区的碰撞检测和UI的显示/隐藏

在此“Success”游戏对象上创建脚本“Success.cs”,删除其中的Start()和Update()方法,编写脚本代码如下:

5.添加背景音乐

一个完整的游戏通常需要背景音乐的辅助,用以烘托气氛和强调节奏。添加背景音乐的方法很简单,将音乐素材导入到项目之后,直接拖入Hierarchy面板中即可。