基于Untiy3D的《乌龟速递》游戏程序开发

2015-05-30 10:48姚子杰
艺术科技 2015年8期
关键词:程序开发手机游戏

姚子杰

摘 要:本文主要讲解手机游戏的设计与实现,对游戏引擎交互技术应用进行专题研究,以界面交互脚本实现、角色控制脚本实现、赛道随机脚本实现等四个部分,详细介绍了运用Unity3D引擎实现游戏开发的研究过程。

关键词:游戏开发;手机游戏;程序开发

1 Unity3D游戏引擎

Unity3D是由Unity Technologies公司开发的一款专业游戏引擎。软件成本较低,非常适合小团队及初创公司使用。Unity3D引擎可以运行在Windows和Mac OS X系统下,可轻松发布游戏及项目至Windows、Mac、Wii、iPhone和Android平台。

2 《乌龟速递》游戏界面实现的要点分析

用户须通过人机交互动作来参与游戏。要完成人机交互,在人和计算机之间必须有一个有效的接口,这个接口既要向人反馈信息也要向游戏设备传递指令,这就是游戏的图形用户界面。

2.1 基于Unity3D实现游戏界面的交互功能

本节将以《乌龟速递》游戏主界面为例,全面介绍在Unity3D引擎平台中,如何实现界面交互功能的。

将主界面中的各个元素单独存储成PNG格式图像,如按钮“新的游戏”,就需要将文字层、按钮层分开保存,而按钮层又分成了两个:一个是默认显示状态;另一个是点击选中状态。这样分层的存储更方便程序直接调用,并且是带有透明层的文件,不会挡住下一层内容显。

(1)主界面项目在Unity3D中创建:Unity3D的默认控件提供了一个预先制作的、简单的蓝色模版作为皮肤,但是,并不一定我们制作的每一款游戏都能使用它。所以在这次的项目中我们使用了GUI Texture来进行界面的制作。GUI Texture是显示在二维的平面图像。他们特别适用于用户界面元素、按钮和装饰。它们的定位和缩放只通过改变X和Y轴来完成。

(2)创建主界面:打开Untiy3D软件主界面在菜单中选择GameObject→Crearte Other→GUI Texture。并将创建出来的GUI Texture改名为bg,让我们可以在后面更方便找到它。当创建完GUI Texture之后,把我们的之前制作完成的背景图放置在GUI Texture组件中的Texture参数中,并将它的wedth和height两个参数修改为1467和587。接着在Transform组件中将Position的Z轴坐标改为-3,这样背景图就会设置在最底层,便于界面上的按钮、文字和游戏标志可以放置在背景图的上方。按同样的方法将其他的按钮和游戏标志放置在界面上,分别将“新的游戏”、“排行榜”、“设置选项”和“退出游戏”等按钮命名为“button_Start”、“button_top10”、“button_option”和“button_quit”,方便后期的识别。在Project面板上创建按钮及背景等相对应的prefabs,并将每一个GUI Texture分别拖拽到相对应的prefabs中,然后保存即可。

2.2 按钮实现交互功能

“新的游戏”按钮在已建立的界面的功能按钮上增加该功能。在界面完成的基础上实现该按钮的功能。

首先需要判断手指是否触碰该按钮,然后这时候就需要用到脚本语言的Update()函数,因为Update()函数是在脚本执行的过程中反复调用,我们可以通过它来检测手指是否触碰该按钮。当手指触碰到按钮的时候就会执行changeScene()函数,切换到下一个界面。脚本编写完成之后,将脚本拖拽到Hierarchy面板上的“button_Start”按钮上。

当“新的游戏”按钮完成触碰检测功能之后,开始编写替换图片功能的代码。首先创建一个Texture2D的公共变量,名称为beginGame_p,把图片拖拽到参数中。然后当按钮被点击之后,我们需要把贴图替换为beginGame_p,需要在changeScene()函数里面添加guiTexture.texture = beginGame_p;这一串代码,整个按钮效果实现,其他几个按钮做法相同。

3 随机赛道脚本实现的要点分析

3.1 分段赛道设置

在游戏策划的时候,就设定了每一个关卡由多个赛道组构成,随机赛道的好处,一是让玩家每一次进入游戏都有新鮮感,不会产生赛道的重复性。二是增加游戏难度,让玩家不容易记住赛道的行驶路径,不会轻松地通过,增加赛道的可玩性。

3.2 随机赛道程序实现

第一,我们需要设置赛道的四个坐标点的位置。虽然赛道的模型文件是随机的,但是我们在程序中约束了每一个段赛道的长度,那么在更换模型的时候,赛道的坐标点是不会改变的。

第二,通过获取游戏进度得到玩家当前游戏的难度,并保存在stageNum变量中。代码如下:

第三,根据Random()随机函数所取值得到赛道数组,代码如下:

第四,不论赛道如何随机,整条赛道的开头和结尾是保持不变的,所以我们把这个随机的C#脚本保存在“kaiTou”赛道中,功能得以实现。

4 小结

本文对基于Untiy3D的《乌龟速递》游戏程序要点分析。探讨了程序实现的方法,并研究了能够实现的主要效果。游戏的模块复杂多样,需要不同的技术人员分工可以完成。具体在本章中对游戏的主界面布局、按钮点击反馈及按钮替换图形做了一个要点分析。针对由本游戏一个亮点的随机赛道也进行了程序分析。

猜你喜欢
程序开发手机游戏
浅析大学生在兼职小程序开发中遇到的问题
基于手机游戏中UI界面的交互设计研究
APP应用程序开发模式探究
陕西省大学生手机游戏迷恋度实证分析
基于TestStand的自动检测程序开发
让手机游戏成为传统文化的传播新渠道
手机游戏对大学生的负面影响及对策分析
基于嵌入式系统Windows CE的应用程序开发
基于App inventor 2手机程序开发过程的学习与实——以“喵喵定时器”APP开发为例
基于ANSYS的大体积混凝土温度应力计算程序开发研究