杨娜,李杰,廖金巧
(北方工业大学信息工程学院,北京 100144)
基于Unity3D的三维生态庄园游戏设计与实现
杨娜,李杰,廖金巧
(北方工业大学信息工程学院,北京 100144)
为了实现三维生态庄园游戏系统,在学习和掌握Unity3D知识的基础上,研究Unity3D中的碰撞检测技术、模型加载技术、人机交互技术等,实现角色控制、场景漫游等功能模块;为了增加游戏的真实性,研究UniSky关键函数的应用,实现游戏中的晴天、阴天等天气效果。游戏具有良好的运行效果,表明Unity3D对游戏的开发是一个有力的工具。
Unity3D;碰撞检测;角色控制;UniSky
三维游戏以计算机图形学为基础,通过三维技术制作而成,可以将各个游戏元素以立体方式呈现出来,其逼真的三维效果,良好的人机交互不但可以给用户带来愉悦的体验,还可以促进游戏市场的发展。无论是三维的动作射击游戏或是三维的角色扮演游戏,其设计和开发都离不开游戏引擎的支持,游戏引擎可以说是游戏的总体框架,只要熟悉和掌握某游戏引擎,就可以缩短游戏开发周期,加快游戏开发进度[1]。就目前来说,Unity3D游戏引擎本身强大的物理特性、跨平台性等特点,受到开发人员的欢迎。为了开发出逼真三维生态庄园游戏,对Unity3D游戏引擎进行研究是非常有实际研究价值和意义的。
目前,Unity3D主要应用在二维和三维游戏的开发以及三维虚拟现实系统的制作上,国内外对于Unity3D游戏引擎的开发具有不同程度上的研究。2011年,干建松[2]在Unity3D游戏引擎的基础上开发了室内漫游系统,以第一视角按照固定路径实现室内家具等的展示;2012年,朱慧娟[3]通过研究Unity3D游戏引擎相关的关键技术,实现了虚拟校园漫游系统,在一定程度上为新生提供了方便;2013年,欧阳攀等[4]人在Unity3D的基础上,对场景实时驱动、交互等方面进行研究,实现了网络版虚拟校园,让大部分人可以通过网络来浏览学校的情况。本文在学习和掌握Unity3D游戏引擎的基础上,对其碰撞检测、人机交互等技术进行研究,从而较好地完成了三维生态庄园游戏的开发。
为了完成三维生态庄园游戏的开发,本文重点研究Unity3D游戏引擎本身的模型加载和碰撞检测技术,为了使三维环境更加具有真实性,研究与Unity3D相关的Unisky天气效果插件,从物理系统、碰撞检测等方面将三维生态庄园游戏划分成人机交互、场景加载、天气系统等部分,其设计如图1所示。
图1 三维生态庄园游戏划分
2.1 角色控制
角色控制是整个三维生态庄园游戏的核心,通过鼠标和键盘来控制虚拟人物的行走,完成角色的漫游以及植物的播种、浇水等操作,而角色控制与碰撞检测紧密相连,若没有碰撞检测,角色可以任意行走,容易发生角色与场景穿透的现象。而合理的碰撞检测可以增强游戏的真实性和趣味性,为了更好地完成游戏的开发,本文对Unity3D中的碰撞检测进行研究,从组件方式、射线方式以及距离方式三方面进行描述。
组件方式是利用Unity3D游戏引擎本身含有的碰撞控件来实现的,可以依据不同的碰撞效果来选择不同的碰撞控件,相对来说比较简单;射线方式是借助Unity3D游戏引擎中的ScreenPointToRay关键方法来实现,是沿某方向发射一条无终点的直线,碰到第一个待碰撞的物体就停止发射射线,并返回碰撞的物体信息,该方法可远距离实现碰撞,且应用灵活,适合炮弹发射等方面;因Unity3D支持JS和C#脚本,且可以调用不同的外在的函数库,开发人员为了解决那个近距离碰撞检测的问题,可以判断两个物体的距离来确定下一步的操作,该方式更加灵活,但需要更好的编码功底。可以说,这三种碰撞检测方式各有千秋,可以依据游戏的开发来选择不同的碰撞检测方式。
2.2 场景加载
场景加载涉及到三维生态游戏的美术资源的导入,一般来说Unity3D游戏引擎支持FBX格式的模型,为了更好地体验效果,避免出现加载的问题,对于游戏中出现的地面、房屋等模型,尤其是需要添加动画的模型,需要导出成FBX格式的文件,这里注意的是将FBX格式的模型导入到Unity3D中会自动生成对应的材质物件以及对应的模型文件,为了完成游戏的开发,避免模型的来回调用,一般将动态的模型生成或图片的加载实现处理成Prefab(预制对象),方便游戏的调用,减少资源的浪费。
2.3 天气系统
为了使游戏更加逼真,添加了晴天、阴天、雨天等天气效果,用来影响植物的生长。因Unity3D兼容性较好,为了节约开发成本,缩短开发周期,游戏中的天气系统是通过UniSky插件实现的。UniSky是开发人员为了使用方便,将关键核心方法封装成Unity3D中支持的控件,需要依据游戏的效果来添加或删除不同的控件或使用不同的脚本,再通过微调各个参数,从而实现晴天、阴天等天气效果,提高了生态庄园游戏系统的体验性和真实性,下面简单描述下晴天天气和雨天天气的实现,流程如图2和图3所示。
图2 晴天天气实现流程
图3 雨天天气的实现
阴天天气的实现是在晴天天气的基础上通过LerpSunIntensity关键函数来更改光线的明暗;后通过LerpCloudCover函数来增加云的厚度、数量及更改其颜色,从而实现阴天天气的效果。而暴雨天气效果的实现是通过SetStormCloudCover和LerpStormCloudCover关键函数设置雨量大小,通过生成暴雨粒子数量和加强场景中的风力大小和环境音效,从而实现暴雨天气的效果。
2.4 音乐音效
音乐音效是游戏中的重要组成部分,为了增加游戏的可玩性和趣味性,在游戏中添加人物行走音效、背景音乐等,增强游戏的真实性。Unity3D游戏引擎支持AIFF、WAV、MP3等格式,可以依据游戏的需要来选择不同的格式,这里注意的是需要添加AudioSource控件,将相应的音乐或音效拖入到对应的控件中,后再通过脚本就可以执行音乐或音效的播放。
本文通过研究Unity3D游戏引擎中的场景加载、角色控制等技术,设计并开发了三维生态庄园游戏,从而验证借助Unity3D的游戏引擎进行游戏开发的可行性和方便性。游戏开发所需的软件环境是Unity3D以及Microsoft Visual Studio 2010。
图4(a)是将制作好的FBX模型导入Unity3D中的效果,可以依据需要来调整模型的位置和大小。图4(b)是虚拟人物在加载的场景中进行漫游,通过控制键盘上的A、W、S、D来控制人物的上下左右的行走。图4(c)是虚拟人物行走到带碰撞物的房子面前,因存在的碰撞检测,虚拟人物无法穿越房子而过,增加了游戏的真实性。图4(d)是虚拟人物行走到土地旁,通过鼠标点击进行浇水动作,完成虚拟人物与植物间的操作。图4(e),4(f)是利用UniSky插件相关的方法和函数来调整参数,从而完成晴天、雨天等天气效果。
本文在熟悉Unity3D游戏引擎中各个组件和脚本的基础上,按照设计的方案完整实现了三维生态庄园游戏的开发,实现了场景加载、角色控制等功能,从而体现出Unity3D游戏引擎的强大性。为了避免物体穿插现象,提高游戏的真实性,重点研究了Unity3D中的碰撞检测技术、UniSky天气效果以及持久化数据管理技术,为游戏的实现奠定基础;因游戏的视觉效果与美术资源相关也较大,而在本游戏中没有太关注模型等的美观程度,在一定程度上降低了场景的美观程度,可以在修改完善功能的基础上,进一步完善和美化游戏场景资源。
图4 碰撞检测方法效果图
[1] 伍传敏,张帅,邱锦明.基于Unity3D的FPS游戏设计与开发[J].三明学院学报,2012
[2] 干建松.基于Unity3D的室内漫游的关键技术研究[J].盐城工学院学报,2011
[3] 朱慧娟.基于Unity3D的虚拟漫游系统[J].计算机系统应用,2012
[4] 欧阳攀,李强,卢秀慧.基于Unity3D的虚拟校园开发研究与实现[J].现代电子技术,2013
Design and Implementation of Three-Dimensional Ecological Manor Game Based on Unity3D
YANG Na,LI Jie,LIAO Jin-qiao
(College of Information Engineering,North China University of Technology,Beijing 100144)
In order to realize the three-dimensional ecological manor game system,based on learning and mastering the knowledge of Unity3D,studies the technology of collision detection,model loading technology,human-computer interaction technology and so on,realizes the role control,scene roaming function module and so on.And in order to increase the authenticity of the game,researches on the application of UniSky's key function to realize the weather effects in the game such as sunny,cloudy and so on.The game has a good running effect, shows that Unity3D is a powerful tool in the game development.
Unity3D;Collision Detection;Role Control;UniSky
1007-1423(2015)01-0045-04
10.3969/j.issn.1007-1423.2015.01.011
杨娜(1993-),女,北京人,本科,研究方向为数字娱乐、互动媒体等
李杰(1986-),男,河南南阳人,硕士,研究方向为虚拟现实、数字娱乐等
2014-11-20
2014-12-09
北京市大学生科学研究与创业行动计划项目(No.NCUT2014008)
廖金巧(1994-),男,安徽合肥人,本科,研究方向为数字娱乐、互动媒体等