kaiyun官方注册
您所在的位置:首页 > 嵌入式技术 > 设计应用 > 基于Unity3D的移动平台躲避游戏的设计与实现
基于Unity3D的移动平台躲避游戏的设计与实现
2016年微型机与应用第08期
于永胜,李效伟,许骏胜,张海程,庄绪姣
(山东女子学院 信息技术学院,山东 济南 250300)
摘要: 主要介绍使用Unity3D制作躲避类手机游戏的方法。实现通过手机的重力感应控制角色躲避飞来的箭,实现箭的数量随机和准确度随机,实现摄像机自然地转动视角,使玩家有更舒适的视觉体验。实现箭的射出和击中时的音效及击中玩家后的粒子特效,使游戏的打击感生动。以上功能的实现使游戏带给玩家更加丰富的游戏体验。
Abstract:
Key words :

  于永胜,李效伟,许骏胜,张海程,庄绪姣

  (山东女子学院 信息技术学院,山东 济南 250300)

       摘要:主要介绍使用Unity3D制作躲避类手机游戏的方法。实现通过手机的重力感应控制角色躲避飞来的箭,实现箭的数量随机和准确度随机,实现摄像机自然地转动视角,使玩家有更舒适的视觉体验。实现箭的射出和击中时的音效及击中玩家后的粒子特效,使游戏的打击感生动。以上功能的实现使游戏带给玩家更加丰富的游戏体验。

  关键词:Unity3D;JavaScript;躲避类;3D手机游戏

0引言

  手机游戏已经进入人们的娱乐生活中,成为娱乐消遣的不可或缺的方法。三维游戏逼真的三维效果和良好的人机交互可以带给用户愉悦的游戏体验。不论是从游戏框架方面还是开发周期方面来分析,三维游戏的制作都很难脱离游戏引擎。Unity3D是由丹麦Unity公司开发的游戏开发工具,Unity3D游戏引擎本身强大的物理特性、跨平台发布、地形编辑、着色器、脚本、网络、物理、版本控制等特性[1],以及通过Unity3D进行作品开发的快速高效性[2],使其受到开发人员的欢迎。

  在众多移动平台游戏中,躲避类手机游戏现在越来越受欢迎。躲避类手机游戏已经有很多经典作品了,比如《神庙逃亡》、《小黄人快跑》等,这些游戏都是第三人称躲避类而且节奏很强的游戏。本文游戏的操作设计比较人性化,玩家仅通过重力感应就可以操控角色,箭的设置比较用心,箭每次飞来的数量随机,准确度也随机,而且会交替到达;充分模仿了人的视觉习惯,玩家获取的视角会随箭而变化。游戏中玩家流血效果的制作运用了粒子系统[3];地形的制作用到了Unity3D本身的地形编辑工具[46];游戏运用了碰撞检测技术[7]。

1游戏设计

  游戏设计包括游戏内容设计和游戏功能设计。游戏内容设计包括游戏的操作方法和游戏的细节设计;游戏功能设计是对组成游戏的要素的具体设计。

  1.1游戏内容设计

  游戏的操作主要通过重力感应实现,玩家进入游戏后,会看到一支支箭从前方射过来,每次来的箭的数量随机,准确度也随机,玩家需要通过倾斜屏幕来躲避飞来的箭。

  1.2游戏结构设计

  游戏的结构包括3D森林场景、重力感应控制、箭的设置、玩家动态视角和游戏的音效与粒子特效。游戏整体设计如图1所示。

  001.jpg

2游戏实现

  游戏的实现包含游戏场景的制作、重力感应控制、箭的设置、玩家动态视角及音效与粒子特效。游戏场景的制作包括地形制作、植物的添加以及天空盒的添加;重力感应控制用于控制角色移动;箭的设置包含箭的数量和准确性的设计随机性;玩家动态视角是实现玩家在躲避箭时摄像机视角的自然变化;音效与粒子特效包含箭射出和玩家被击中时的音效和此时的粒子效果。

  2.1游戏场景的制作

  游戏场景的制作包含地形和植被的制作以及天空盒的添加。地形和植被的制作包括制作高低起伏的地形和森林;天空盒的添加指给游戏场景加一个天空背景。

  (1)地形和植被的制作

  森林地形的制作包括地表材质的添加以及制作高低起伏的地形。首先要通过创建terrain来创建一块平地。地表材质贴图需要通过 “Add Terrain Texture”面板添加。高低起伏的地形的制作需要先做出有一定高度的山丘,然后磨平这些山丘比较尖锐的角就可以了。

  添加树和草的方法很相近。添加树时,需要先在“add tree”面板中添加树的模型,点击add按钮后,就可以用笔刷工具在场景中种树了。添加草时只要添加做好的草的png格式的图像就能在场景中用笔刷工具种草了。

  (2)天空盒的添加

  天空盒的添加包括向场景中添加和向摄像机添加,这里采用的是向场景中添加。首先要导入天空盒资源包,然后向skybox Material拖入不同的天空盒文件就能添加不同的天空盒。

  2.2重力感应控制

  重力感应是玩家操纵游戏角色的方法。通过调用Input.acceleration.x控制角色的水平移动,调用Input.acceleration.z控制角色的上下移动。

  重力感应实际是调用了手机的加速度感应器,包含x、y和z轴三个方向上的加速度数值,当手机晃动时,每个轴上的加速度数值都会发生相应的变化。当手机左边高度低于右边高度时,Input.acceleration.x小于0,角色向左移动;反之同理;当手机的屏幕有朝上的分量,Input.acceleration.z小于0,角色向上移动;反之同理。

  2.3箭的设置

  箭的设置包括每次飞来的箭数量随机和每一支箭的准确度随机。

  (1)数量随机

  场景中需要设置多支箭,只要把每一只箭的速度设置成随机,当箭飞到玩家身后一段距离后,将箭的位置重置到玩家前方,而且将箭的速度也一起重置,这样,每一支箭被重置到玩家前方,这一支箭的速度就会发生变化,玩家每一次遇到的箭的数量也会变为随机。在每次将箭重置到玩家前方时,还将箭在射向玩家方向上的坐标设置成一定范围的随机值,这样就使玩家每次遇到的箭的数量更加不确定,使本游戏的趣味性更强,变化性更丰富。

  (2)准确度随机

  当将箭的位置重置为玩家前方时,通过箭的高度和水平位置的调整可以使箭的准确度不确定。将箭的高度和水平坐标重置成一定范围的随机值就可以实现箭是随机的;将箭的高度重置成玩家的高度、水平坐标重置成玩家的坐标就可以实现箭的追踪,这里通过emp.transform.position.x、emp.transform.position.y和emp.transform.position.z获取玩家的三维空间坐标。

  2.4玩家动态视角

  视角的变化主要是用LookAt来实现的。LookAt函数能使物体旋转自身,使其指向目标物体所在的位置。首先需要获取箭在三维空间中的坐标arrow.transform.position.x、arrow.transform.position.y和arrow.transform.position.z,然后将箭的位置作为参数带入LookAt函数。

  2.5音效与粒子特效

  游戏中的音效与粒子特效的实现都是通过用代码调用在场景中创建的组件实现的。

  (1)游戏音效

  箭击中角色所触发的音效的实现方法如下。首先在场景中建立一个空物体hit,在hit上添加Audio Source音频组件,然后将声音文件拖到音频组件的Audio Clip中,再在控制角色移动的脚本中声明一个AudioSource类型的变量music,最后用music获取刚才的声音组件AudioSource,当箭射中了角色时,就用music.play()触发这一段音效。

  (2)粒子特效

  箭击中玩家时会触发粒子特效,实现方法包括创建粒子系统物体和通过代码控制粒子物体。

  先创建一个粒子系统物体Particle System,要在Inspector中将粒子的颜色Start Color调整为红色;粒子持续时间需要设定为确定值,这里需要将Looping的对勾去掉,再将Duration的值设定为确定值;通过Start Lifetime调整粒子存在的时间;通过Start Speed调整粒子喷出的速度;再通过调整Emission中的Rate来改变单位时间里发射的粒子数。

  创建一个GameObject的变量particle,用particle去获取Particle System,当箭击中了角色时,就通过particle.particleSystem .Play ()触发这个粒子效果。

002.jpg

  游戏界面如图2、图3所示,它的实现要有3D的效果,而且背景必须要精美,这样才能有足够的吸引力。

  

003.jpg

4结论

  这是一款基于Unity3D开发平台制作的游戏,运用了JavaScrip脚本,实现了游戏场景的制作、重力感应控制、箭的设置、玩家动态视角及音效与粒子特效,但模型的制作还需要再精细一些,场景中可以加一些动态的变换的元素,3D效果还可以通过暴风墨镜加强。

  参考文献

  [1] 王树斌.浅析Unity3D开发游戏流程及常用技术[J].电脑知识与技术,2012,8(22):53515352.

  [2] 李效伟,张海程,董树霞,等.Unity3D引擎在软件类学科竞赛中的应用[J].计算机教育,2015(24):69.

  [3] 谢韬.基于Unity3D粒子系统的游戏特效实现[J].现代计算机,2015(16):3032.

  [4] 蒋元,蔡胜军,何绍勇,等.基于Unity3D的虚拟地理环境构建[J].现代计算机,2014(22):5255.

  [5] 张敏.基于Unity3D的三维地形建模[J].湖南工业职业技术学院学报,2014,14(6):1618.

  [6] 王亚萍.浅析Unity3D创建环境地形[J].计算机光盘软件与应用,2012(19):175.

  [7] 李杰,杨娜,李钊.真实感游戏中的碰撞检测方法研究[J].现代计算机,2014(1):3537.


此内容为AET网站原创,未经授权禁止转载。
Baidu
map