大学本科计算机专业射击游戏系统设计毕业论文

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

11.引言1.1开发背景随着计算机的发展,各种电子游戏层出不穷,不断冲击着人们的视觉。如今社会,电子游戏已经成为青年人们消遣,释放压力的一种方式。其中CS,CF等第一人称射击类成为众多游戏迷的选择,这种3D游戏的真实感和还原度不仅能在视觉和听觉上有独特的创新,还可以提供团队作战,多人联网游戏等功能,使玩家有各种不同的新体验。现如今,3D射击类游戏通常以第一人称视觉为主的游戏形式出现,这样的形式,不但可以让玩家进入了惊险刺激的游戏里面,又满足了玩家在生活中体验不到的乐趣。所以,这种特点的游戏是十分具有发展前景的。Unity3D是这个毕业设计的开发工具。Unity3D是一个以易用和实用为主打,可跨多平台的游戏开发工具。作为一个完全由专业集成的开发软件,Unity3D还包含了价值数百万美元的功能强大的游戏引擎。Unity3D是一个多平台的游戏开发工具,因此,利用Unity3D并且综合多重开发工具例如:PhotoshopCS3,C#等编程语言进行的游戏开发,具有非常高的可行性。第一人称射击游戏类具有庞大的客户基础,市场前景非常可观。[1]1.2研究目的与意义本次毕业设计的题目为基于Unity3D的第一人称射击游戏技术实现,目的在于成功的设计出一款可以运行在各种客户端的设计游戏,在项目完成的时候,玩家可以通过操作对游戏里的主角进行活动,以达到玩家体验虚拟游戏的目的。在这个游戏中,游戏的参与者可以在用户端上面通过向左或向右滑动来改变主角的方向,同时我们还可以通过怪物对主角的跟踪从而对主角进行碰撞检测,使我们的主角生命值降低,从而改变游戏的状态。2通过此射击游戏的开发设计,使我对大型三维游戏的制作有了更深一层的了解,明白了游戏的一般的制作过程,发布过程,是我学习上的一个全新的体验,具有提高实践开发能力的意义。2开发环境和技术2.1开发环境2.1.1Unity3D图2.1Unity3D标志Untiy3D是本次毕业设计最主要的软件。这个软件以使用,易用和跨平台为主,Unity还具有一个性能非常领先的游戏引擎,价值不菲,是一个完全集成的专业应用。正由于它强大的专业游戏开发引擎能大大节省开发的时间,所以Unity3D是市面上一个高效率的多平台的游戏开发工具。[2]2.1.2C#语言图2.2C#C#是本次游戏的主要脚本语言,C#是一个面向对象的计算机语言,同时它也是拥有相对较高安全系数的客户端脚本语言。C#也通常用于web客户端的开发,3网页中的动态功能就可以用C#去编写。游戏中的脚本语言也可以用到C#,因为C#的结构相对比较简单,所以非常适用于游戏开发当中去。以本次借鉴的游戏CS反恐精英为例子,这款游戏就是运用C#去进行脚本的编写,可见C#在游戏开发中的热门程度。2.1.3Maya2013图2.3Maya制作效果参考图Maya2013是一款由美国出品的三维动画软件,在世界的应用非常广泛,应用对象是十分专业的制作,例如影视广告,角色动画,游戏设计,电影特技等。Maya功能十分完善,是电影级别的高端制作软件而且工作灵活,易学易用,制作效率极高,渲染真实感极强。[3]2.2运行环境运行游戏所需要的硬件和软件推荐配置见表2-1:表2-1运行环境和配置要求名称软件/硬件版本或配置的要求Windows操作系统软件XP或以上DirectX驱动软件3.0或以上PC个人电脑硬件个人电脑显卡硬件4G以上4续表2-1运行环境和配置要求名称软件/硬件版本或配置的要求内存硬件2G以上2.3开发步骤要开发出一款射击类游戏,首先要了解它的开发工具和脚本语言。在校期间,我通过学校的课程学习和在图书馆中查阅与开发项目相关的资料,渐渐的对游戏引擎有了一定的了解,选择了自己相对熟悉的C#作为本次开发的脚本语言。然后深入学习在开发中的要使用C#包,通过自己查阅C#相关资料,在网上搜索的资源和老师的指导,达到能开发游戏的水平。整个毕业设计过程见表2-2:表2-2项目开发计划和步骤步骤详细内容1学习使用Unity3D平台,在书本和网上对Unity进行了解。认真去探究Unity3D每个功能模块的作用和操作方法。通过课堂的学习和老师的细心指导,尽快熟悉了解每一个模块的基本操作。2做出游戏的主要场景,设计游戏的主要架构,明确游戏中角色与角色,角色与场景之间的交互过程;在网络上或者课件上查找场景角色相关的资源,方便开发。3将找到的资源导入系统,设置场景中的元素,比如障碍物、主角、武器、敌人、出生地点等。具体制定游戏逻辑关系,对游戏里的角色交互进行初步规划。4将每个角色或者组件的脚本进行编辑,调试每个组件之间的功能与交互性,编写出游戏的开始,过程和结束时的状态。这个过程是整个开发中的核心内容。5测试游戏,从开始到结束把游戏玩几遍,证实游戏的可玩性,并对每一处可能存在的错误漏洞进行排除5续表2-2项目开发计划和步骤步骤详细内容6最后,查阅相关资料,编写毕业论文,总结毕业设计过程中存在的错误和可以改进的地方,准备答辩演讲稿。3Unity3D3.1Unity3D发展图3.1Unity标志上面已经提过很多次,不过想在这里详细介绍一下Unity3D,它是由丹麦Unity公司开发的一个游戏开发工具,具有跨平台,多功能,易使用等等的特性。正由于它强大的整合编辑和跨平台发布能力,使它成为市面上最受开发者青睐的开发工具之一。Unity3D经过多年的发展,目前的已发行的最高发版本为5.0版,这个版本代表了一个质的飞跃——内置的光照贴图、遮挡剔除和调试器。重新革新的编辑器,可以获得大大提高开发的效率。[4]3.2Unity3D的特点Unity3D是利用交互的图型化开发环境为首要方式的游戏开发工具,类似于Blendergameengine,Virtools或TorqueGameBuilder等等开发软件,它具有综合编辑、支持多格式、一键部署、混合视频音频流、支持多脚本、重写渲染引擎、Unity资源服务器等特点,这就是Unity3D与其他游戏编辑软件的不同6之处。因为它的编辑器可以运行在微软和苹果电脑系统中,所以开发的程序可发布游戏至windows,苹果和安卓这些平台。它也可以利用它独有的插件去各种发布网页游戏,手机游戏,支持多种系统的网页浏览。[5]因为其适应性极强,兼容性极高,所以是各种不同种类的游戏开发者的首选。最新版本的Unity3D特点具体见表3-1:表3-1Unity3D特点主要特点具体内容1)综合的编辑Unity拥有一个整合性的编辑器,它可以同意地对每一个界面进行编辑,因此节省了逐个打开每个界面的时间,提高了开发的效率。2)支持多种格式开发软件支持多种主要文件格式,而且能和大多数相关应用程序协同工作。3)一键部署Unity可以让开发者的项目在多平台发布。在File选项中的BuildSetting功能中,可供选择的方案十分多样齐全,开发者可以选择将自己的程序发布到自己选择平台上,典型的平台有Windows平台,或者安卓,iOS平台等。[6]4)混合音频流和视频流实时同步3D图形,混合音频流、视频流,以达到使本游戏更加逼真和传神。5)支持多脚本Unity3D支持JavaScript,C#,Boo这三种脚本语言。支持多脚本的特点为更多不同语言的编程人员提供了开发的可能,也使程序更具兼容性。[7]6)重写渲染引擎Unity3D最新版本中改写了全部的渲染终端,这样使得新版变的比以前的版本更加的灵活。渲染的时间也比以前缩短一倍。7)Unity资源服务器由于Unity3D的资源服务器是一个版本控制的产品。对于场景的切换更加快捷,极大的提高了开发效率。73.3Unity3D包的使用在Unity3D中自带着许多写好的包,人们都可以直接将这些写好的包进行调用,这样就非常的方便了我们的游戏开发和制作,而且,我们也可以在网上找到一些别人已经写好的包导入到自己的开发的游戏中去,然后根据自己的游戏设计的需求,对那些下载了的包进行一个小小的改动,使它更好的适用于我们的游戏当中,从而使游戏的可玩性更高。Unity3D中包的使用极大的提高了开发的效率,使我们的开发更加方便,而且也节约了我们不少的开发时间,缩短了开发的周期。[8]3.4Unity3D发布平台Unity3D可以把开发的游戏发布在电脑,安卓,苹果手机系统和网页游戏上,这种多平台开发的功能可以方便游戏能用于各种不同的终端当中。[9]不但这样,Unity还可以将游戏发布出很多种文件格式,例如.exe文件和.apk文件,还有.swf文件等等。[10]图3.2发布平台84游戏设计4.1开发目标本次游戏开发的目标是设计出一个具有基本打怪功能的第一人称射击小游戏。该游戏具有打击怪物,计分和统计历史最高纪录的功能,怪物可以追踪主角,打倒一个怪物可以获得100计分。弹药100发,当弹药耗尽时候更换弹药。当主角生命值为0时,游戏结束。4.2界面设计4.2.1游戏设计准备一个游戏场所,场景中的美术设计可以再网上下载或者在教学课件中找到,然后,再在游戏中的墙壁设置碰撞功能。图4.1游戏场景载入素材,选择三个场景模型,在菜单栏中的【MeshCollider】设置碰撞体组件9图4.2选择场景模型图4.3设置碰撞组件4.3主角设计4.3.1设置主角组件在菜单栏中创建一个主角的组件,然后设置其参数,取消选择重力模拟,选着不熟物理影响,这样主角就能用脚本语言进行控制了。10图4.4设置主角组件设置主角的生命值,移动和镜头的代码,见图4.5和图4.6图4.5主角基础数据代码监视键盘,把w,s,a,d设置为主角移动的上下左右键11图4.6控制主角行动代码将代码放进Player.cs,指定给角色组件,按W,S,A,D,移动鼠标,就可以对角色进行上下左右和镜头的移动。4.3.2设置武器要将武器绑定在主角身上,随着主角移动。把素材导入场景中,设置武器的位置。图4.7武器组件位置设置124.4敌人设计射击游戏中必须有敌人或者打击目标。本游戏中,敌人会对游戏中的主角进行寻路,并追踪主角进行伤害,并且,敌人相应的行为都会有相应的动画,在敌人不同状态的时候播放出来,增加游戏的生动性。图4.8敌人组件设置4.4.1设置敌人动画设置好了敌人的大小和位置,接下来为敌人的动作行为设置动画,这个设置是游戏想的更加生动逼真,让玩家觉得更加有真实感。例如在游戏中,对敌人的生成,跟踪,攻击,死亡时,导入相应的动画,再在脚本中对动画的出发条件进行编写,当条件满足,敌人相应的动画就会播放。13通过Animator窗口,把敌人的行走,死亡,攻击,静止等一系列动作关联起来,并在脚本中把它们控制起来。图4.9Animator窗口4.4.2设置敌人行为因为敌人的动画与控制它的代码有关,用Enemy.cs修改敌人的脚本,在不同动画状态的敌人行为也会有改变,代码如下:定义两个变量m_movSpeed和m_rotSpeed,一个指定敌人的移动速度,一个制动敌人的转弯速度14图4.10敌人寻路,转身和移动判断敌人生命值,当生命值为0时返回,当生命值不为0时,追踪主角图4.11敌人在追踪主角当敌人与主角的距离小于1.5f,敌人进入攻击状态,调用敌人攻击动画15图4.12敌人进入攻击行为时的代码当敌人收到打击,判定生命值为0时,,销毁自身,调用销毁动画。图4.13敌人死亡时的代码以上就是敌人行为的代码。4.5设置交互设置好了场景,主角,敌人这三个主要元素后,虽然敌人可以攻击主角,但是主角还不可以攻击敌人,所以接下来就是使他们进行交互,让主角可以攻击敌人。16打开Player.cs,添加代码如下列图:为游戏的界面添加主角的数据显示,包括生命值,弹药数,实时分数,历史记录。图4.14添加UI与生命值的联系图4.15添加射击时的属性当射击到敌人,敌人会产生伤害,敌人收到伤害后会死亡。设计的代码如下:17图4.16以上就是主角与敌人的交互代码。4.6设置主角与敌人的死亡最后,设置主角和敌人生命值为0的状态,当敌人死亡时自身销毁,加100分;当主角生命值为0时结束游戏。4.6.1敌人死亡,打开Enemy.cs文件,对敌人死亡的状态添加代码,当敌人生命值为0,进入死亡

1 / 34
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功