基于Unity3D引擎的竖版飞行射击游戏的设计与实现.docx

上传人:b****3 文档编号:4747743 上传时间:2022-12-08 格式:DOCX 页数:37 大小:3.84MB
下载 相关 举报
基于Unity3D引擎的竖版飞行射击游戏的设计与实现.docx_第1页
第1页 / 共37页
基于Unity3D引擎的竖版飞行射击游戏的设计与实现.docx_第2页
第2页 / 共37页
基于Unity3D引擎的竖版飞行射击游戏的设计与实现.docx_第3页
第3页 / 共37页
基于Unity3D引擎的竖版飞行射击游戏的设计与实现.docx_第4页
第4页 / 共37页
基于Unity3D引擎的竖版飞行射击游戏的设计与实现.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

基于Unity3D引擎的竖版飞行射击游戏的设计与实现.docx

《基于Unity3D引擎的竖版飞行射击游戏的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于Unity3D引擎的竖版飞行射击游戏的设计与实现.docx(37页珍藏版)》请在冰豆网上搜索。

基于Unity3D引擎的竖版飞行射击游戏的设计与实现.docx

基于Unity3D引擎的竖版飞行射击游戏的设计与实现

基于Unity3D引擎的竖版飞行射击游戏的设计与实现

TheDesignandImplementationofAVerticalVersionofFlightShootingGameBased

onUnity3DEngine

成绩评定

摘要

随着社会的不断发展,互联网在我们生活中有着不可挪动的地位,我们的生活习惯和方式也因此发生了重大的变革。

5G时代的到来,让其中的游戏行业也受益其中,越来越多的人开始改变对游戏的看法并且关注或者投身其中。

在射击类游戏中,玩家可以自由操控角色移动,闪避敌人子弹的狙击,然后发射子弹击落敌机,从而获得游戏胜利。

在这一个对抗过程中,不仅仅锻炼了玩家的反应速度,还有眼睛与手的配合,更重要的是能从每一次失败中锻炼心态,提高我们的抗压能力。

Unity3D作为一款支持多平台发布,拥有大量插件支持和操作容易适合上手的游戏开发引擎,它不仅在3D游戏制作方面突出,在2D游戏制作表现也尤为优秀。

本论文探究基于Unity3D引擎开发竖版飞行射击游戏。

游戏中具有飞机角色系统,玩家可以升级强化飞机的各类属性,敌机会随机出现,拥有追踪功能,不同的Boss拥有不同的弹幕。

游戏内设有计分系统和时间系统,给有追求的玩家提供挑战性。

本文从国内外飞行射击游戏发展背景分析研究开始,到确定游戏的设计和功能的实现,最后对游戏功能测试,校验结果表面游戏可以成功运行。

关键词:

Unity3D飞行射击游戏弹幕

Abstract

Withthecontinuousdevelopmentofthesociety,theInternethasanimmovablepositioninourlife,andourlivinghabitsandwayshavealsoundergoneamajorchange.Withtheadventof5Gera,thegameindustryalsobenefitsfromit.Moreandmorepeoplestarttochangetheirviewsonthegameandpayattentiontoorparticipateinit.Inshootinggames,playerscanmovetheircharactersfreely,dodgesnipershotsfromenemybullets,andshootdownenemyplanestowinthegame.Inthisconfrontationprocess,notonlyexercisetheplayer'sreactionspeed,aswellasthecooperationbetweentheeyesandhands,moreimportantly,canexercisethementalityfromeachfailure,improveourabilitytoresistpressure.

Asagamedevelopmentenginethatsupportsmulti-platformrelease,hasalargenumberofplug-insandiseasytooperateandsuitableforgettingstarted,Unity3Dnotonlystandsoutin3Dgameproduction,butalsoperformsparticularlywellin2Dgameproduction.ThispaperexploresthedevelopmentofaverticalflightshootinggamebasedonUnity3Dengine.Thereisanaircraftcharactersysteminthegame,theplayercanupgradeandstrengthenallkindsofattributesoftheaircraft,enemyopportunitiesappearrandomly,havetrackingfunction,differentbosseshavedifferentbarrage.Thegamehasascoringsystemandatimingsystemtoprovideachallengeforpursuingplayers.Thispaperstartsfromthedevelopmentbackgroundanalysisofdomesticandforeignflightshootinggames,todeterminethedesignofthegameandtherealizationofthefunction,finallytothegamefunctiontest,verifytheresultsofthesurfacegamecanbesuccessfullyrun.

KeyWords:

Unity3DFlightShootingGameBarrage

 

第一章绪论

1.1背景及意义

在所有的游戏类型中,飞行射击游戏可以说是最古老,也是最深入人心的一种游戏。

在飞行射击游戏中,玩家往往操作着一架普通飞机,在漫天密集的弹幕中惊险地消灭敌人,充当世界的救世主。

或者以宇宙作为背景,驾驶高科技战机在太空中探险。

世界上第一款街机游戏就是飞行射击游戏《太空大战》,它是由麻省理工学院学生史蒂夫拉塞尔在1961年设计出来,是真正运行在电脑上的第一款交互游戏。

到70年代,FC(红白机)时代,《小蜜蜂》和《沙陀曼蛇》的出现,前者画面上得到显著的提示,后者首次引入吃能量球,通过积攒来升级飞机属性和枪械导弹。

90年代初,《雷电》和《彩京》系列相继出世,把“躲子弹,打飞机”推向一个极端的高潮。

两者凭借多样战机选择,武器升级设定和高难度弹幕吸引了大多数游戏玩家,很快成为风靡全球的街机游戏。

再到后来的《东方project》系列,从弹幕、关卡设计、剧情、画面、音乐等多方面革新,时至如今《东方project》的同人作品还在涌现。

飞行射击游戏是集娱乐、即时操作、锻炼反应力的一类游戏,游戏面对的主要人群是青少年或者需要释放压力的职工。

玩法丰富,面对飞向自己战机的敌人和炮火,不禁会让人感到紧张刺激,玩家通过操作躲避子弹并且击败敌机从而释放压力。

游戏过程中,随着玩家获得更多经验,解锁不同的战机和子弹,增加游戏可玩性,随着关卡难度的逐渐提升,可以激发玩家的好胜心,获得更好的游戏体验。

所以综上所述,基于Unity3D引擎开发一款竖版飞行射击游戏具有重要意义。

1.2课题研究现状

随着时代发展,游戏作为一种娱乐方式,进入我们的生活,帮助我们释放压力,丰富我们的休闲时间。

而如今5G网络在普及,VR、AR技术在逐渐成熟,游戏行业作为这几个方面都能获益的一方,不久的将来一定会有一次重大的变革。

如今国内比较流行的游戏引擎有Unity3D、虚幻(Unreal)、白鹭(Egret)、Cocos2D等。

虚幻引擎注重于数据生成和编程方面,在做FPS和TPS时有完善、集成和统一的工具链。

白鹭引擎是一个基于HTML5技术的游戏引擎,具有高效的渲染模块,完善的配套工具。

Cocos2D是一个免费开源的游戏引擎,注重于移动端游戏开发。

相对于上面几款开发引擎而言,Unity3D引擎支持多种格式的导入,给开发者省去不必要的麻烦。

拥有3A级图像渲染引擎,简单易用,灵活高效。

支持NVIDIAPhysX物理引擎,支持Java,C#,Boo三种脚本语音等优点。

在对于入门者而言,Unity官方能提供个人免费版支持学习,还有在Unity社区里面有很多官方优秀教程。

而对于专业开发人员,Unity商店可以提供各色各样的插件,大大减少了开发者的工作量。

在游戏发布方面,Unity3D引擎支持多平台发布。

对于使用者,Unity3D能满足大部分的需求以及提供足够的便利性。

也正是因为如此,该引擎在功能游戏引擎市场上占据了45%的市场份额,具有良好的发展前景。

因此熟练掌握和理解和应用Unity3D引擎具有一定意义。

1.3论文组织结构

论文从最初构思到分析实践,结合专业游戏开发资料,进行一个竖版飞行射击游戏的设计制作。

主要具体介绍游戏的制作步骤,包括游戏的系统功能设计和主要代码的编写。

论文分为六章,各章节安排如下:

第一章节:

绪论,主要阐述了毕业设计制作的背景目的、课题研究现状以及毕业设计的大概介绍;

第二章节:

大致介绍Unity3D和本文制作游戏所用到的开发工具;

第三章节:

游戏需求分析和总体设计方案,规划开发方向;

第四章节:

游戏详细设计和实现,细化各个模块并且实现;

第五章节:

运行游戏并测试,封装打包;

第六章节:

总结和对游戏今后的改进方向规划;

第二章开发工具和技术简介

这一章主要介绍游戏实现过程中Unity3D引擎的部分功能,以及对其他使用到的工具做一个简单的介绍。

2.1Unity3D游戏引擎

2.1.1软件介绍

Unity3D是由UnityTechnologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

支持Windows、Mac、Android、IOS、PS等共10余种平台,提供非常完美的跨平台系统,大大减少了开发者在平台移植上花费的不必要时间。

Unity的可视化模式为开发者提供直观的图形化程序接口,开发者可以用玩游戏的形式开发游戏。

在众多视图窗口中最常见的有5个,分别是Scene、Game、Hierarchy、Project、Inspector。

Scene窗口:

摆放模型文件,编辑游戏界面。

Game窗口:

根据摄像机的拍摄,对Scene场景的游戏运行的播放。

Hierarchy窗口:

负责管理在游戏中使用的相关组件。

Project窗口:

工程文件窗口,存放放所有工程文件资源。

Inspector窗口:

显示所有选中对象的组件信息,可以进行编辑。

2.1.2物理引擎介绍

游戏设计都应该具有其物体特性的合理性,游戏才能给人一种真实的感觉。

Unity的NVIDIAPhysX的物理引擎系统为开发人员提供了如刚体、碰撞器等游戏组件。

在开发的过程中,渲染,光线,颜色的对比度,材质等一系列的组件给我们带来的是视觉上的逼真效果。

而在操作上想要获得真实反馈效果则需要物理引擎系统,运用组件修改对象受到的重力,摩檫力,空气阻力等具有物理特性因素外力从而获得在碰撞等物理变化后如同现实世界发生的真实效果体验。

2.1.3GUI(图形用户界面)介绍

GUI是图像用户界面GraphicalUserInterface的缩写,Unity的内置GUI系统被称作UGUI,本文主要使用UGUI来制作界面的开发。

UGUI中有大量的界面组件,开发者只需要创建实例,就可以在Scene窗口对其进行大小形状的调整,在Inspector窗口对选中组件进行进一步的细化设置,如锚点定位、交互反馈等。

2.1.4Unity的保存读取数据方式介绍

众多游戏中,玩家们致力于最高的分数、更强的装备和角色进阶的属性,允许玩家主动保存和加载成为了很多游戏必不可少的功能之一。

Unity中比较常见的保存读取数据的方法有四种,分别是PlayerPerfs数据持久化方案、数据序列化与反序列化中的:

二进制方法,JSON方法和XML方法。

PlayerPerfs方法,通过构建一个键,对应的键名存储对应的数据,需要读取数据的时候只需要查找对应的键名就可以,适用于保存少量数据。

是一种特殊的CaChingSystem缓存系统,可以在不同的场景之间,有效的保存一些简单的设置和变量。

序列化就是把对象的状态或者各个属性转换为另一种格式的自动化过程。

二进制方法方便能存储更多的数据,但这方法存储文件的可读性几乎为0,但却能保护数据防止别人篡改。

JSON方法传输速度快,占用空间小,可读性比二进制要好。

但仅支持简单类型,不支持集合。

XML方法,存储文件重复信息多,占用空间大,解析XML文件需要花费较多的资源和时间。

本文需要存储数据量较少,因此主要使用PlayerPerfs数据持久化方案来储存游戏数据。

2.1.5Unity常用生命周期函数介绍

Unity3D游戏引擎不像常规程序从Main函数入口运行,而是有一套自己的生命周期函数运行方式顺序,下面会从基本函数运行顺序介绍。

Awake():

当一个对象初始实例化时Awake函数被调用;

Start():

在Awake函数调用后执行,Start函数只在脚本实例被启用时才会执行;

Update():

在对象运行之后,Update函数每一帧都会被调用;

FixedUpdate():

固定帧执行函数,跟Update一样,不过能通过设置FixedTime来决定调用次数;

OnEnable():

对象激活的情况下才能调用;

OnDisable():

对象未启用或未激活时调用;

OnDestroy():

销毁对象时调用;

2.2AdobePhotoshopCC2017

AdobePhotoshop,简称“PS”,是由AdobeSystems开发和运行的图像处理软件。

Photoshop主要处理以像素所构成的数字图像。

它是一个集图像扫描、编辑修改、图像制作、广告创意、图像合成、图像输入/输出、网页制作于一体的专业图形处理软件。

本文主要使用它完成战机的受损图片制作。

2.3C#语言介绍

C#语言是微软公司推出的一种高级的、面向对象的语言,它简化了C++语言在类、命名空间、方法重载和异常处理方面的操作,它摒弃了C++的复炸性,更容易使用,更少出错。

C#与Java类似,是一种语言,一种工具。

在Unity引擎中,C#语言通过Mono的重新实现,让Unity能够使用C#来作为开发语言。

2.4VisualStudio2017

VisualStudio2017开发环境是微软公司自主推出的。

VisualStudio2017集成开发环境是一种创新启动板,可用于编辑、调试并生成代码,然后发布应用。

集成开发环境(IDE)是一个功能丰富的程序,可用于软件开发的许多方面。

除了大多数IDE提供的标准编辑器和调试器之外,VisualStudio2017还包括编译器、代码完成工具、图形设计器和许多其他功能,以简化软件开发过程。

第三章游戏的需求分析及总体设计方案

编写游戏需求分析和总体设计方案,规划游戏开发方向。

3.1竖版飞行射击游戏的需求分析

3.1.1玩家需求分析

无论是哪一款游戏,不管它是以什么方式实现,或者出现在某一个领域之中,它最直接的使用者永远都是游戏玩家。

而玩家最想要得到的需求就是与游戏有交互性和交互的简易性,即是玩家在做出每一步操作之后都希望能到明显的反馈信息和操作过程中的简便性。

此外增加游戏的可玩性和挑战性等,都能更一步满足游戏玩家对玩下去游戏的欲望。

3.1.2功能分析

本飞行射击游戏拥有两个核心,自己操作的战机和需要击败的敌机。

围绕两个核心去做功能分析,添加功能,完善核心。

首先就战机核心来做分析。

战机作为玩家操纵的个体,需要有一个固定的飞行区域,玩家不能把战机开出这个区域。

作为个体应该拥有自己的属性,如血量、飞行速度、攻击力等等。

单一不会变动的属性是不能吸引玩家的,所以需要添加一个战机升级系统,战机通过击败敌机后获得经验,然后使用经验去升级,升级之后战机的属性提升。

战机在不同等级的时候有不同的子弹枪械和战机外貌。

不同的枪械搭配各自对应的子弹,形成新的弹幕。

在属性提升和拥有新弹幕之后便可以挑战更难的关卡,亦或去刷新以前的挑战记录。

其次就敌机核心来做分析。

敌机作为飞行射击游戏的另外一个主角,在面对玩家时如果太容易被击杀那便失去了游戏的挑战性。

所以敌机应该如同主角战机一样拥有属性,并且可以把敌机分类别,例如小敌机、中敌机、大敌机以及最后要战胜的Boss领主。

不同类型的敌机各自拥有自己的属性,不同的枪械和弹幕。

在属性和弹幕等方面分析后,需要思考敌机的生成方式。

敌机可以从屏幕的上方生成,向下方飞行。

如果只是简单的飞行是满足不了玩家需求的,因此需要一个敌机智能AI系统,敌机与战机两者之间距离少于一定是,敌机会向战机飞去。

与普通的敌机不同,Boss应该在一定范围内移动,直到被玩家消灭,所以Boss也应该有自己的移动路线,在该路线上循环移动。

最后,分析一下在游戏过程中需要的功能需求。

在游戏过程中的菜单暂停功能,给玩家处理其他事情时带来方便。

道具功能,战机在获得道具后可以切换成超级武器,增加攻击。

局域限制功能,如果敌机未被玩家击败而是飞出了区域外,需要销毁这个对象,减少Unity的资源消耗,同理战机和敌机的子弹也需要。

游戏结束的条件判定功能,如果战机血量为0游戏失败,敌机Boss血量为0游戏胜利。

游戏数据存储读取功能,在每次游戏结束时保存获得的经验,每次游戏开始时读取战机的属性。

综上所诉,将本文探究研发的游戏功能大致划分为如下几个模块。

(1)场景模块:

根据上诉玩家需求分析,在场景中,当玩家通过鼠标键盘输入对应指令时,游戏场景内的组件应该做出对应的反应,给出反馈;

(2)战机模块:

战机控制,飞行有区域限制,具备属性,枪械子弹,战机外貌;

(3)敌机模块:

敌机分类别,具备属性、枪械子弹,有AI控制其行为;

(4)游戏功能模块:

暂停功能、道具功能、胜负条件判断、区域限制、保存读取功能;

游戏大体功能划分如下图3-1所示。

图3-1游戏大体功能规划图

3.2游戏的总体方案设计

3.2.1游戏结构方案设计

基于考虑玩家接触游戏不同类型的时间各有不同,为让玩家能快速上手,本文游戏大体结构不能太过复杂,结合参考大部分游戏,得出结构如下图3-2所示。

 

图3-2游戏大体结构图

3.2.2总体结构方案设计

结合上述结论,本游戏总体结构模块框架图如下图3-3所示。

 

图3-3游戏总体结构模块图

结合上述需求分析,按照游戏总体结构模块图,以Unity3D游戏开发引擎和C#脚本为基础,实现游戏的研发。

第四章游戏详细设计及实现

按照需求分析和总体设计方案,对游戏进行详细设计,细化完善各个模块并且实现。

4.1场景模块

本游戏场景模块主要使用Unity3D引擎自带的GUI系统UGUI制作,结合C#脚本实现如场景跳转等功能。

为了统一游戏颜色基调,在非游戏场景中,需要把MainCamera中的ClearFlags由Skybox改为SolidColor,把背景颜色调成黑色。

然后在Hierarchy面标中点击Create-->UI-->Canvas创建一个画布。

4.1.1开始场景

在开始场景中,在画布组件上鼠标右击UI-->Text创建文本作为游戏名字标题,把Text的锚点固定在中上方。

为了开始界面不那么单调适当添加一些游戏角色图片,放在标题下方。

右击Canvas-->UI-->Panel,在Panel面板里添加水平布局组,方便为后面放入图片后能自动调整位置,在Panel里面添加三个Image,更换Image精灵。

添加三个游戏按钮右击Canvas-->UI-->Button,startgame、resetgame、exitgame。

分别对应开始游戏,重置游戏,退出游戏。

为了给玩家带来点击按钮反馈,在Button组件面板上进行调整。

添加点击音效,在OnClick()上添加声音点击事件。

在Transition上选择ColorTint,把HighLightedColor的透明度调低,实现当鼠标放在上面时有颜色反馈的效果。

如图4-1所示。

按照上述操作,开始界面制作如下图4-2开始场景所示。

图4-1按钮设置图

图4-2开始场景

4.1.2战机属性场景

战机属性场景主要是展示当前战机的外貌和所有属性,在Canvas上右击选择UI-->Panel创建一个板作为大画板,管理全部的UI。

为了显示战机外貌,需要创建图片来显示战机外貌,右键选择UI-->Image,创建Image更名为PlayerImage。

把PlayerImage图片精灵更换成战机外貌,锚点设置在左边,调整位置。

为了反馈战机当前经验进度,在PlayerImage上右键选择UI-->Text,创建的文本用作后期实现反馈的文本。

如图4-3所示。

图4-3战机外貌设置图

战机属性分为名字、等级、血量、速度、攻击力、当前经验。

为了完善经验方面的反馈,再增加升级下一级需要经验和当前拥有可用来升级的经验。

在Panel上右键UI-->Panel创建一个新板,改名为Text。

在Text板内添加文本,每一个文本对应上述属性的名字。

在Text板的Inspector面板上添加组件水平布局组,选择UpperLeft对齐。

如图4-4所示

 

图4-4Text板设置图

复制一份Text板,改名为Display,用作显示属性对应的数值,水平移动到Text板的右边,为与Text板区分开,把Display板内的文字颜色换成其他颜色。

按照上述按钮创建方法,添加一个按钮改名为Start,作为跳转到下一个选择关卡场景的载体。

按照上诉操作,战机属性界面如下图4-5所示。

 

图4-5战机属性场景图

4.1.3关卡选择场景

游戏关卡一共设置为三关,分别为绿色峡谷,天空废墟,沙漠戈壁。

玩家可以自行选择任一关卡进行游戏。

右击Canvas,选择UI-->创建Panel,在Panel中加入水平布局组件,在水平布局组件中选择MiddleCenter。

右击Panel,选择UI-->Image,添加三张图片,分别把每张图片的精灵换成对应关卡的背景图。

在图片下方添加文本组件,用来描述关卡名字。

文本下面添加上述制作的按钮,用来给后续进入关卡做载体,如下图4-6所示。

图4-6关卡选择界面Panel设置图

添加一个按钮作为回退到战机属性场景的载体,锚点定在左上角。

按照上诉操作,关卡选择界面如下图4-7所示。

图4-7关卡选择界面图

4.1.4加载场景

在Unity中如果需要加载的游戏场景体积过大,在普通的场景跳转的时候显示屏会黑屏许久,带来不友好的体验。

为了在场景加载中给玩家一些反馈信息,本游戏设定在加载游戏场景的时候使用异步加载的方式,而跳转非游戏场景时则使用普通的跳转方式。

为了实现异步加载场景,需要新建一个场景,因此便有了加载场景。

在加载场景中,在Canvas画布上如同开始场景制作了三个卡通人物人Panel,增加了场景的趣味性。

加载场景最需要给出玩家反馈信息便是加载进度,右击Canvas,选择UI-->Text创建文本,用作显示进度条加载百分比数字。

选择UI-->Slider创建滑动条,点开Slider删除HandleSlideArea,修改FillArea下的Fill颜色变成黄色,作为进度条加载时的颜色,如下图4-8所示。

图4-8Slider设置图

调整Slider长度大小,把固定在Canvas正下方。

把Text文本组件移动到Slider上方。

按照上诉

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 可爱清新

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1