FPS射击游戏的设计与实现_第1页
FPS射击游戏的设计与实现_第2页
FPS射击游戏的设计与实现_第3页
FPS射击游戏的设计与实现_第4页
FPS射击游戏的设计与实现_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

IFPS射击游戏的设计与实现摘要随着科学技术的进步与发展,计算机终端设备(PC、手机等)已经普及至个人用户,随之而来的各类游戏数量越来越多,种类也越来越丰富。目前,游戏玩家对游戏性质和画面的要求越来越高,并且在不断要求更加新颖的游戏方式,更加美好的游戏体验。此外,游戏也逐步在向着移动终端进行扩展,手机游戏也因此正在蓬勃发展。时下,针对游戏开发有着各式各样的开发引擎,比如UE4、U3D、GMS等,目前因为移动平台的兴起,主打短平快的Unity3D引擎站上了主流的舞台,通过使用Unity3D引擎进行游戏开发,既可以实现键盘和鼠标的输入及操控,也能轻松应对触控操作的移动平台。Unity3D优秀的多平台功能成功地将主流游戏运行至手机、网页等等不同的平台,可以说是一款非常优秀实用的游戏引擎了。本次课题通过学习与实践相结合的方式系统的针对U3D引擎进行探索设计,并根据此开发出一款有着较为完善功能并且达到一定可玩性基础的第一人称射击游戏。关键词:游戏开发;Unity3D;多平台;第一人称射击

ABSTRACTWiththeadvancementanddevelopmentofscienceandtechnology,computerterminalequipment(PCs,mobilephones,etc.)hasbeenpopularizedbyindividualusers,andthenumberofvariousgamesthatfollowhasbecomemoreandmorediverse.Atpresent,gameplayershavehigherandhigherrequirementsforthenatureandgraphicsofthegame,andtheyareconstantlydemandingmorenovelgamemethodsandbettergamingexperience.Inaddition,gamesaregraduallyexpandingtowardsmobileterminals,andmobilegamesarethereforebooming.Nowadays,therearevariousdevelopmentenginesforgamedevelopment.Mostmainstream3DgamesusetheUnity3Dgameengine.TheUnity3Dgameenginecannotonlyrealizekeyboardandmouseinputcontrol,butalsodealwithtouchscreeninput.Unity3D'sstrongcross-platformcapabilitycansuccessfullyportgamestodifferentplatformssuchasmobilephonesandwebpages.Itisaverygoodgameengine.Thistopicaimstolearnthebasicmethodsofgameproductioninpractice,explorethebasicideasofdesigninggames,usetheUnity3Dgameenginerationally,andplantodevelopafirst-personshootinggamewithrelativelycompletefunctionsandcertainplayability.Keywords:Gamedevelopment;Unity3D;multi-platform;first-personshooting

目录TOC\o"1-3"\u摘要 IABSTRACT II1. 绪论 11.1 课题研究背景 11.2 Unity3D介绍 11.3 课题研究意义 22. Unity3D引擎概述 42.1 界面介绍 42.2 在3D场景中查找目标对象 52.3 创建游戏对象 52.4 场景视图导航 52.5 移动游戏对象 52.6 缩放游戏对象 72.7 游戏视图 72.8 资源的使用 72.9 复制功能的应用 82.10 添加组件 83. 游戏设计 93.1 游戏简介 93.2 游戏背景设计 103.3 游戏中各类对象介绍 103.3.1.敌人的设定 113.3.2.武器的设定 123.3.3.其他道具 143.4 游戏的操作方式 153.5 游戏关卡设计 163.5.1.清除关卡设计 163.5.2.撤离关卡设计 183.5.3.两个关卡的分析汇总 193.6 游戏设计总结 214. 游戏模块设计与实现 224.1 游戏的总体目标 224.2 游戏框架 224.3 游戏的场景 234.4 游戏的任务系统 274.5 瞄准与射击 284.6 医疗包的获取 284.7 游戏发布 295. 游戏测试 31总结 33致谢 35参考文献 36

绪论课题研究背景曾经因为硬件的限制,各类游戏的画面显示上并没有3D的概念,仅仅停留在2D平面的状态显示,随着个人用户终端配置的提升和软件开发环境的进一步完善和提高,人们开始对游戏显示画面产生了更加严格的要求,曾经的平面画面已经无法满足游戏玩家的要求。因此,利用2D显示设备(如液晶显示器、电视以及现在主要的个人终端手机平板等)更好的表现3D游戏画面已经成为游戏开发当中最为重要的课题。Unity3D是一个让你轻松创作的多平台的游戏开发工具,是一个全面整合的专业游戏引擎。通过Unity简单的用户界面,你可以完成任何工作。这些为你节省了大量的时间。然而对于一个商业化的游戏引擎来说,快速高效的完成类似的特效应该是分内之事。使用该类引擎的游戏,可以通过各类平台发布,玩家无需配置价格高昂的个人电脑,使用手机或者浏览器即可随意游玩。Unity3D介绍Unity3D是UnityTechnologies开发的一款全面的多平台游戏开发工具,可让玩家轻松创建交互式内容,例如3D视频游戏,建筑可视化效果和实时3D动画。完全集成的专业游戏引擎。Unity类似于Director,Blender游戏引擎,Vitriol’s或TorqueGameBuilder,以及其他使用交互式图形开发环境作为其主要方法的软件。它的编辑器可在Windows和MacOSX上运行,并可将游戏发布到Windows,Mac,Wii,iPhone,WebGL(需要HTML5),WindowsPhone8和Android平台。您也可以使用UnityWebPlayer插件发布网络游戏,并支持在Mac和Windows上进行网络浏览。Mac也支持网络播放器。尽管最初Unity3D并不广为人知,但是随着移动设备性能的跨越式进步,使得易于开发的Unity3D逐步成为目前市场上最受欢迎的游戏引擎直以,它打破了大型公司专有引擎的装快,同时为游戏行业的发展做出了强有力的推动。Unity3D引擎具备下列优点:技术实现:现在最火爆的《王者荣耀》就是用Unity3D开发的,暴雪zhi的《炉石传说》客户端也是用daoUnity3D开发的,《神庙逃亡》、《球球大作战》等等都是用U3D开发的,这些游戏有多火爆我这里就不再说。跨平台:Unity3D支持PC、移动、主机三大不同的平台。商业授权:Unity个人版是免费的,只有当年盈利超过10万美元才需要购买专业版的授权。重构:Unity使用面向组件的开发模型,该模型可能要求将整个游戏逻辑都用C#重写,但是原始项目中仍然有可用的资源。基于上述优点,本次课题采用Unity3D引擎作为项目开发工具。课题研究意义随着计算机技术的发展,配置的不断改进以及游戏开发环境的不断改进,游戏开发人员可以开发具有更好图形的游戏。电脑游戏已成为最受欢迎的娱乐方式之一。从过去的二维平面游戏到今天的三维游戏,玩家的要求越来越高。过去,二维屏幕无法满足游戏玩家的要求。游戏从2D到3D的发展已成为必然趋势。Unity3D只是一套3D游戏开发工具和游戏引擎。其强大的功能使游戏开发人员可以轻松开发3D游戏。Unity3D包括图形,音频,物理,网络和其他引擎支持,并具有一个非常强大的编辑器,可以将所有这些功能集成在一起,非常适合游戏开发。通过学习和使用它,学生可以练习和改进整个程序或艺术的设计,并对其学习知识进行整体测试。该主题的目的是设计和实现3DFPS游戏。FPS是第一人称射击游戏(游戏术语)的缩写。FPS(第一人称射击游戏):第一人称射击游戏。严格来说,FPS属于ACT游戏分支,但与RTS游戏一样,由于FPS在世界范围内的迅速普及,它已经发展成为另一种类型。顾名思义,FPS(第一人称射击)是从玩家的主观角度射击游戏。玩家不再像其他游戏一样通过操纵屏幕上的虚拟角色来玩游戏,而是沉浸式地体验游戏的视觉冲击并体验游戏的主动性和逼真性大大加强。在早期的第一人称游戏中,玩家通常会受到屏幕上的灯光的启发,并且游戏的节奏既简单又快速。游戏硬件的逐步改进以及不同游戏的不断结合。第一人称射击游戏提供更丰富的情节,精美的照片和生动的音效。因此,在本文中,我将向您展示如何使用Unity3D开发第一人称射击3D游戏,以便向您展示如何使用Unity3D和您的技能来开发3D游戏。

Unity3D引擎概述界面介绍图2-1界面介绍首先,下载并安装Unity3D软件,通过UnityHub新建项目并打开。首次启动,界面会显示为默认视图模式,如图2-1界面介绍所示。图2-1界面介绍这几个主要区域分别为:层级区域:列出当前场景中所用到的游戏对象;场景区域:用于摆放罗列各类对象;游戏区域:用于调试游戏过程中直接显示游戏运行后的内容;项目区域:该区域显示目录资源下所有可用的资源列表;检查器区域:显示用户选中对象的各类属性及相关信息。

在3D场景中查找目标对象启动Unity后进入我们创建的项目当中,就可以发现游戏场景当中的目标对象,新建的项目开始场景中仅包含一个主相机,你能从层次区域中看到这个唯一项。如果在场景区域中看不到相机,在层次区域中点击主相机Main Camera ,然后光标移动到场景区域中,按F(frame select)键,主相机就显示在场景区域的中心,当然也可以直接在层次区域中双击主相机,也可以快速在场景区域中找到。这个技巧可以用来查找你在场景中创建或导入的任何游戏对象。创建游戏对象要将某些游戏对象添加到场景中,请使用Unity菜单“游戏”->“创建和其他”来创建它们,或从外部导入它们。要从外部导入游戏对象,请先将它们导入项目区域,然后将其直接拖动到场景或层次结构中。使用Unity游戏对象创建游戏对象,比如选择Game Object ->Create Other ->Plane 就可以在场景中创建一个平面供角色行走。添加一个立方体到游戏场景中,选择Game Object->Create Other->Cube。添加一个点光源,选择Game Object ->Create Other->Point Light  。场景视图导航用下列方法你可以从任何角度查看3D模型:旋转:Alt+鼠标左键平移:Alt+鼠标中键缩放:Alt+鼠标右键或者你也可以选择Unity左上角的手形工具,选择手形工具后,鼠标左键平移,鼠标右旋转,鼠标中键缩放。移动游戏对象在Unity中你可以用下列方法移动三维空间中任何游戏对象:(1)移动工具(快捷键W)。选中任何游戏对象,然后按W键,将显示三个箭头,如图2-2移动游戏对象所示。红色是X轴,绿色是Y轴,蓝色是Z轴。即,红色,绿色和蓝色分别对应于X,Y和Z轴。要移动对象,请使用鼠标左键单击箭头以适当地移动它,或单击中心以移动整个对象。移动的过程当中,检视面板中游戏对象的位置坐标Position的值也会改变,你也可以在此处键入坐标值将游戏对象移动到相应位置。图2图2-2移动游戏对象(2)旋转工具(快捷键E)。选择任何游戏对象,然后按E键用​​鼠标左键旋转游戏对象,如图2-3旋转游戏对象所示。在旋转过程中,检查面板的旋转值Rotation会相应更改。您还可以通过在“旋转”下面的三个文本框中输入每个轴旋转的角度值来旋转游戏对象。 图2-3旋转游戏对象图2-3旋转游戏对象缩放游戏对象图2-4缩放游戏对象缩放游戏对象要使用缩放工具(快捷键R),选中游戏对象,按R键后,会显示三个坐标轴,如图4缩放游戏对象所示。每个轴末端都有一个小方块,拖动轴末端的小方块来实现对游戏对象在该轴方向的缩放,也可以点击中间,实现整体按比例缩放。在缩放的同时,检视面板中Scale的值也会相应改变,也可以直接在该处键入精确的缩放数值。图2-4缩放游戏对象游戏视图游戏视图显示的是游戏运行时的样子,有完整的纹理、照明等,如果在游戏视图中不能看到场景中的对象,是因为相机没有找到正确的朝向。选中Main Camera会出现一个倒金字塔线框,这就是相机的视角,如果视角方向没有指向游戏对象,在场景中找到游戏对象,选择Main Camera 并选择Game Object->Align With View ,这样游戏视图就会匹配场景视图,当然也可以通过移动工具和旋转工具将主相机移动到合适的位置,旋转到合适的角度。资源的使用电脑游戏包含3D模型,纹理,声音文件,游戏代码等。这些称为游戏资产。Unity已经包括标准资源包,甚至是专业资源包。您可以使用资源包中的资源。例如,如果您从内置资源向游戏场景添加角色,并在“项目”视图中展开标准资产的“标准资产”文件夹,则默认的预制将游戏对象预组装为逻辑组。第一人称控制器FPS控制器出现在预设文件夹中。仅将第一人称控件用于场景视图。此时,第一人称控制器上的预设包括他们自己的摄像机,该摄像机可以更改游戏视图并替换主摄像机的视图。注意不要让第一人称控制器掉落地面,然后移开主摄像机并单击“播放”按钮以开始游戏。使用光标键或“游戏视图”中的W,S,A,D控制第一个人在场景中行走,使用鼠标环顾四周,然后按空格键进行跳跃。再次单击播放按钮以停止游戏。要注意在当光标处于任何视图内的时候按下空格键,这将是该视图最大化,有助于更好的在场景中做调整或在游戏视图中玩游戏,在最大化的视图中再次按下空格键返回以前的布局模式,这个功能在游戏运行时不能使用,必须先停止或暂停游戏。复制功能的应用复制游戏对象是一个强大的功能,当复制一个对象,它所有的功能和行为也会被复制,这是在场景中创建多个相同对象的非常快捷的方法。复制的方法是在层次视图中选中需要复制的游戏对象,然后按下Ctrl+D,或者是从Edit菜单中也可以做到这个。注意在层次视图部将多出一个相同的游戏对象,但是你不能在场景视图中发现它,因为它和场景中原有的对象是重叠在一起的,只需使用移动工具将一个移动到适合的位置即可。添加组件游戏对象可以是由若干个组件或行为组合而成,点击任何游戏对象,都可以在检视视图中看到它所附加的组件,如Transform, Box Collider等等。我们可以通过Unity的菜单给游戏对象添加适当的组件。比如我们从外部导入的模型,一般都不能产生碰撞,因为它没有物理属性,我们可以通过Unity给它添加一个刚体( Rigidbody )组件。Rigidbody组件允许游戏对象拥有一个重力,即对象会向下下降,碰到含有碰撞(collider)组件的物体为止。操作方法为:选中游戏对象,选择Component->Physics->Rigidbody .这将添加刚体组件到当前所选择的游戏对象,在检视面板中也会看到刚体组件被添加。

游戏设计游戏简介本文使用Unity 3D软件设计一款第一人称射击类的三维游戏——太空战士。游戏中操控主角在关卡中与完成任务过关,根据不同关卡可以设计不同任务以供玩家游玩——如寻找逃生点、击败地图上的敌人等。游戏利用Unity地形系统设计出室内迷宫地形,并且处于太空之中,再使用Unity中的一些自带材质以构成一个充满科幻风格的的游戏环境。天空盒也是使用的Unity自带的天空盒,玩家采用固定摄像机视角的第一人称物体,显示武器即可。游戏中各类特效均采用Unity资源包中设计好的预置体,只须拖到游戏场景中放在合适的位置即可。游戏中采用了第一人称视觉,玩家在电脑屏幕上看到的画面就是通过游戏里的摄像机拍摄出来的,摄像机会跟随玩家移动而移动。玩家角色和敌人角色都是通过JavaScript脚本控制的,同时GUI的显示效果也是脚本程序来实现的。游戏中的GUI设计有GUI Texture ,GUI Label ,GUI Button 三种形式。游戏为开枪发射子弹和游戏对象被击毁时的爆炸效果添加了声音,还给所有的敌人都设计了AI,敌人在玩家接近到一定区域后向玩家开始攻击,可以移动的敌人还能追击玩家进行攻击。游戏中设计了5个场景,分别是开始场景、关卡一、关卡二、胜利场景、失败场景以及操作介绍。下面介绍一下各个场景的内容。首先是开始场景,主要通过文本显示出两个菜单,操作指南和开始游戏;之后是主要的关卡场景,此场景中通过对关卡的设计以及任务指引供玩家游玩,并通过地面以及建筑风格带来较强的科幻感觉,同时导入了不同的敌人种类,并且设置了不同类型的武器以供玩家使用;游戏中的两个关卡设置了不同的完成任务,尽管只有两个关卡但是3D第一人称射击游戏的主要功能都实现了,而且本课题旨在通过此游戏的设计与开发实践来介绍使用Unity3D开发3D游戏的方法和技巧。游戏背景设计游戏发生在外太空的敌人堡垒当中,玩家扮演的太空斗士潜入敌人堡垒当中完成任务进行破关。在敌方堡垒中有着森严的守卫进行不间断的巡逻,且核心机要区域也设有强大的阻击炮等待着玩家的到来。玩家的任务就是潜入其中,寻找特殊的敌人消灭之,然后到达指定区域消灭敌军进行破关。游戏中各类对象介绍图3-1图3-1游戏对象介绍游戏中有生命值的设定,在玩家被击中以后会损失生命值,因此也设计了医疗道具,如上图所示。击败巡逻的敌人有一定几率掉落医疗道具,使用以后玩家增加XX点血量,玩家血量最高不能超过100。游戏中还有多种枪械的设定,如图3-1游戏对象介绍所示。不同枪械能够带来不同的射击效果,同时玩家可以根据不同枪械采取不同的战斗方式。敌人的设定在本次课题实践当中,我们设计出了统一风格下的两种不同类型的敌人,分别是巡逻飞兵与固定炮兵,造型如图3-2巡逻飞兵和固定炮兵原型所示。图3-2巡逻飞兵和固定炮兵原型本课题当中敌人在功能和属性上遵循了该游戏类型的经典规则——高机动性高伤害低弹药量低射速低生命值,低机动性则为低伤害高弹药量高射速以及高生命值。根据兵种的名称可以了解到,两种敌人分别负责路径巡查和守关功能,而根据二者功能的不同,赋予巡逻飞兵100点HP,同时其所发射子弹伤害值为10,发射间隔为1秒;而固定炮兵则拥有300点HP,其所发射的炮弹也拥有4点伤害值,发射间隔0.07秒图3-2巡逻飞兵和固定炮兵原型图3-3六种敌人型号当然,上述属性及内容均为在创建两种怪物时的默认数值赋予,具体到关卡实践当中时,可以根据位置不同,将两种怪物扩展成大、中、小三种体型共计六种型号图3-3六种敌人型号这里给与小型巡逻飞兵30点HP以及5点伤害,中型巡逻飞兵70点HP和10点伤害,大型巡逻飞兵则拥有100点HP以及15点伤害。固定炮兵也采用类似设计,小型炮兵150点HP和1点伤害,中型炮兵拥有250点HP以及2点伤害,大型炮兵作为守关Boss则拥有400点HP以及4点伤害。武器的设定在本课题游戏当中我们设置有两种常用武器,分别是激光枪和蓄能炮,与传统FPS游戏的弹夹设计不同的是这些未来武器并没有弹夹的设计,取之的是能量电池——枪械射击动作以后会自动充能以达到填充能量的作用。激光枪是一种类似于自动步枪的高射速直线射击枪械,这里我们赋予激光枪15点伤害以及16点能量电池,射速则采用0.1秒,这样一来激光枪就可以达到较为合理的射速以及较为适中伤害的设计要求了。蓄能炮的作用大体可以认为是抛射型重武器,其采用按键蓄能的射击方式,蓄能时间越长伤害越高。这里我们赋予蓄能枪基础伤害40点以及2点能量电池,射速则为0.5秒,蓄能时间最长1.46秒,蓄能情况下最低值为80,最高则为350点,充分凸显了蓄能炮这把武器的名字以及特性。图3-4两种常用武器这两把武器的外观如图3-4两种常用武器所示,有着较为科幻感觉的造型,这里我直接采用了Unity商城自带的素材文件,Unity3D引擎除了强大便捷的各类功能以外,其商城以及社区对初级开发者可以说是非常友好的。图3-4两种常用武器通常来说,一款FPS游戏当中应该有较为多种类的武器才是,在太空战士这款mini游戏中也并不例外。这里本课题依旧采用激光枪与蓄能炮两种模型为新武器模型,通过使用Unity自带参数调整工具修改新武器的参数,即可让其达到多种武器效果的设定。举例子来讲,就比如将激光枪的能量电池容量从现有的16点降到3点或者4点,然后将射击间隔即射速调整至1秒钟,同时将自动射击修改为手动射击,最后将伤害值提高到100点,这样大概就能模拟传统射击游戏当中的狙击步枪的效果了。当然,在未来对本课题做延展开发的时候可以根据自由想象随意添加更为种类多样的枪械武器,并且可以根据自己喜好自行设计对应的武器模型以及特殊的武器效果,这些都可以通过便捷易用的Unity3D引擎来实现。其他道具在本课题中,除了敌人和武器以外,还有回复生命道具——医疗包道具的设定。医疗包这种道具是一次性道具,功能也相当简单——在玩家生命值不满的情况下可以回复最多40点生命值,最多不超过生命值设定上限。医疗包可以放置在关卡地图当中任意位置,也可以设置为击败敌人以后敌人掉落,非常灵活实用的一种游戏道具。图3-5医疗包在设计医疗包的时候最初计划是采用一个急救袋的样子,但是因为需要美术相关技能去设计,经过一段尝试以后发现缺少美术能力的我实在是不能让这个道具很美观,最后依旧选择了采用Unity商城中的十字道具如图3-5医疗包图3-5医疗包游戏的操作方式作为一款第一人称视角射击游戏,本课题所设计的游戏采用了传统3D射击游戏类似的操作方式,即通过使用键盘以及鼠标完成的移动、快捷按键以及瞄准射击等具体方式的经典操作方法。图3-6游戏操作方式具体的操作方式如图3图3-6游戏操作方式正如图3-6游戏操作方式中所展示的,玩家通过操控鼠标进行射击、瞄准以及额外的切换武器操作,同时通过键盘按键进行移动、跳跃、下蹲以及冲刺的位移操作,并且可以快捷键的方式进行游戏暂停等额外操作。这里的操作方式基本遵循了传统射击游戏的操作设计,是经受时间考验过的相当成熟的操作方式。游戏关卡设计通常来说,一款游戏除核心玩法以外,最重要的便是其关卡的设计。好的关卡设计可以掩盖游戏开发当中美术表现力的不足,同时也能够较好地规避开发技术实力上的缺陷,简而概之就是通过关卡大大提升游戏核心乐趣所在。本次课题所设计的游戏是一款第一人称视角射击游戏,这一类游戏的关卡通常都有着较为丰富的内容填充,比如经典的使命召唤系列、毁灭战士系列、孤岛惊魂系列等等,都有着令人称道的经典关卡设计。当然作为一款毕设作品,笔者的能力与这些世界顶级厂商的作品当然不可相提并论,但是他们在关卡设计上的优点和长处也是我们广大初级开发者应当学习了解并尽可能运用到自己作品当中来的。通常来说,关卡设计需要在设计关卡之初绘制地形等要素,这里我们通过Unity3D引擎的场景工具,使用其商店提供资源进行关卡地图的绘制大大节约了我们的关卡设计时间,优秀的调试工具也让所见即所得成为了现实。我们通过将已创建对象摆放至场景中即可实现简单关卡的设计。目前在本次课题所设计的游戏当中计划有两个关卡存在,根据两个关卡的任务目标设计不同又分别为清场关卡和抵达撤离区域关卡。清除关卡设计本游戏关卡包含对象主要有地板、墙面、高台、固定炮台敌人以及巡逻敌人。通过这些要素我们便可以完成游戏当中关卡的设计。首先我们在新建场景当中通过地板以及墙面搭建出玩家出生点,这里将地板以及墙面拖动到场景当中,然后将玩家对象放入到地板之上即可完成玩家出生点的创建,具体设计详情如图3-7玩家出生点所示。图3-7图3-7玩家出生点玩家出生点的设定便是游戏当中本关卡的开始,对应的需要根据设计思路配对设计出该关卡的结束,作为我们的第一个关卡,这里我们设置为清场关卡,即该关卡结束需要清除掉本关卡中的全部敌人,也就是我们放置在地图当中的巡逻飞兵和固定炮兵即可完成关卡。在设计关卡时也需要考虑到,作为首个游戏关卡,其难度应当符合玩家此时对游戏的认知,不应该过于困难或者过于简单,应当符合目标用户的难度需求,这里我们在清除关卡当中放置3个巡逻飞兵以及2个固定炮兵,其中巡逻飞兵为2个小型飞兵1个中型飞兵,固定炮兵则为1个小型炮兵1个中型炮兵,中型炮兵作为本关卡守关Boss,并且其会掉落一把蓄能炮作为该关卡奖励。该关卡设计如图3-8清除关卡俯瞰图所示。图3-8图3-8清除关卡俯瞰图通过图3-8清除关卡俯瞰图可以较为清晰的看到,玩家出生点在最左侧小房间,通过击败中间中型房间的小型飞兵与小型炮兵后,顺着连廊坡道抵达最终Boss房间。因为该关卡为清除关卡,所以仅仅击败Boss并不能达成完成该关卡获得胜利,而是需要将关卡中全部5个敌人全部击败才能完成任务获得奖励蓄能炮。这里需要说明的是,巡逻飞兵的巡逻路径设计。通过创建路径点的方式设计出闭环路径,然后将对应区域飞兵赋值至巡逻路径当中,即可完成飞兵的自动巡逻功能。这里依然要感慨Unity3D引擎的强大之处。撤离关卡设计撤离关卡的设计上,除了地形以及敌人变换以外,我们还需要为玩家设计该关卡中需要完成的胜利条件——抵达特定区域撤离。该功能我们通过任务模块实现——添加特定区域设定后将抵达区域行为设定为完成关卡必须条件,同时将清除敌人设定为可选条件,这些在游戏开始以后都会体现在任务系统当中,下面我们将展示撤离关卡俯瞰图。

观察图图3-9撤离关卡俯瞰图3图3-9撤离关卡俯瞰图在撤离关卡当中,玩家的首要任务并不是清除关卡当中的全部敌人,而是抵达蓝色撤离光圈。这样的设定使得这一关卡的设置具备了潜入游戏的必要条件——非击杀的情况下完成关卡目标。这一功能在后续的版本更新迭代当中也能够起到非常重要的作用——我们可以根据关卡的功能来别出心裁的设计关卡的玩法,使得游戏趣味性大大提高。两个关卡的分析汇总在完成两个关卡的设计以后,不难发现因为不同关卡目标的设定在设计关卡的时候需要因地制宜的设立任务——清除关卡中因为要击败全部敌人,这里我们可以将敌人数量控制在一定范围之内,并且组合攻击力与生命值不应该过于超出玩家接受范围之内。在撤离关卡当中,由于玩家首要目标并非清除敌人而是逃离该区域,所以我们可以将敌人数量提高,但是在最终逃离区域附近设立较为有挑战性的战斗以供用户不会因为全程跑动即可完成关卡而过于无聊。图3-11撤离关卡任务图3-10清除关卡任务在传统的关卡设计当中,不同类型的关卡应当尽可能穿插出现,在丰富游戏多样性的同时可以降低用户习惯性的审美疲劳。下面我们通过图3-10清除关卡任务与图图3-11撤离关卡任务图3-10清除关卡任务从两张图片的左上任务区域我们可以清晰的看到,表示必要条件的红点区域任务描述内容发生了变化,而这也正是导致两个关卡设计思路发生变化的核心所在——通过不同的任务目标设计不同的关卡玩法是在做游戏开发时需要注意也是需要保持水准的重要一环。游戏设计总结通过对两个关卡的设计,不仅可以掌握到Unity3D引擎对不同对象的控制思路,还能提高自己对关卡设计的理解,这些都是必须通过实践才能获得的宝贵经验,也是未来在这一方向持续发展前进的珍贵动力。

项目的模块设计与实现游戏的总体目标本游戏应该具有以下界面和功能:游戏的界面简单、美观。具有一种仿真的图像效果。游戏中的多种模型之间能相互碰撞,并设计合理的生命值。游戏中实现对手也能释放多种攻击性的子弹等。场景中设计有多种的提高子弹数的能量包,实现达到一定的分数,就能增强攻击的效果。游戏设计一般分为三个层:视图层:对于主要添加到场景层次结构中的游戏对象,这些对象通常是渲染对象。控制层:添加到主摄像机或空对象中的管理脚本组件。这些脚本主要用于控制相应的功能模块并与其他功能模块进行通信,例如接口管理和网络在线管理。模型层:主要添加到渲染对象的逻辑脚本组件。这些脚本在游戏对象上执行逻辑。游戏框架进入游戏主界面后,我们会看到一个类似于宇宙的太空中赤红的巨大球体下的奇异世界,崎岖林寻的险峻地形环拱而成的巨大迷宫。游戏中通过S键控制角色向后退,通过W键控制角色前进,通过A键控制角色向左移动,通过D键控制角色向右移动。通过鼠标左键来控制角色进行攻击,通过空格跳跃键以及下蹲C键避开敌人的攻击等。角色设置的是100的生命值,当生命值等于0时候,代表本次闯关失败。游戏中也可以获取医疗包来治疗,同时可以拾取新的武器进行攻击。

游戏的场景图4-1游戏开始界面首先进入游戏开始界面如图4-1游戏开始界面图4-1游戏开始界面本场景主要包含开始游戏以及游戏操作介绍两个按键,点击开始游戏会进入到游戏场景当中以供用户进行游戏,点击游戏操作按钮则会出现游戏操作方式介绍。在Unity3D当中,提供了多种图形化操作的便捷功能设置,通过使用Unity3D自带的按钮设置功能,可以设置成为根据用户点击按钮来进行指向型跳转,从而达到直接显示操作方式图片以及开始游戏的目的。点击Play按钮以后会进入到游戏界面,实现该功能的核心代码如下所示:privatevoidUpdate(){if(EventSystem.current.currentSelectedGameObject==gameObject&&Input.GetButtonDown(GameConstants.k_ButtonNameSubmit)){LoadTargetScene();}}publicvoidLoadTargetScene(){SceneManager.LoadScene(sceneName);}这里仅展示部分核心功能代码,不作全篇声明引用的展示,该部分代码主要功能为判断Play按钮是否按下,按下以后则会加载设置好的场景,该跳转功能可根据需要灵活调整,并用在各个游戏界面当中。图4-2游戏主界面进入游戏主场景以后会显示游戏主UI,如图4-2游戏主界面图4-2游戏主界面在游戏主场景中可以看到有各类UI显示功能,主要有玩家的生命值、地图显示、任务指引、弹药填充等功能。这里通过键盘按键判断以及鼠标点击判断功能实现。在该展示界面中,生命值主要有受伤害降低、获取医疗包增加以及判断角色是否被击败三项功能,受到伤害判定功能主要通过以下核心代码实现:floathealthBefore=currentHealth;currentHealth-=damage;currentHealth=Mathf.Clamp(currentHealth,0f,maxHealth);角色获取医疗包增加血量主要通过以下代码实现:floathealthBefore=currentHealth;currentHealth+=healAmount;currentHealth=Mathf.Clamp(currentHealth,0f,maxHealth);角色被击败部分实现代码如下: if(currentHealth<=0f){if(onDie!=null){m_IsDead=true;onDie.Invoke();}}则主要考量血量是否小于0,根据受伤害部分代码判定,如果大于0为假,则角色被击败,返回m_IsDead,之后程序判定角色失败。

图4-3游戏胜利界面在完成关卡任务以后会进入到游戏胜利界面,如图4-图4-3游戏胜利界面可以看到,本场景界面当中拥有两个按键设计,分别是菜单以及重玩游戏功能。点击Menu会弹出游戏菜单页面,点击PlayAgain则会重新进入游戏第一场景开始游戏。这里采用Unity3D引擎自带事件发生器识别判定用户点击的具体为哪一个按键,之后根据预设条件的不同会产生不同的结果,点击Menu会弹出游戏菜单,而点击PlayAgain则会加载第一场景,这里仅展示LoadScene加载功能的核心代码内容:privatevoidUpdate(){if(EventSystem.current.currentSelectedGameObject==gameObject&&Input.GetButtonDown(GameConstants.k_ButtonNameSubmit)){LoadTargetScene();}}游戏的任务系统图4-4任务指引在本课题设计中,不同关卡中可以设计不同的任务玩法。每次任务目标会在关卡开始以后显示在游戏界面左上角的任务描述区域,如图4-4任务指引所示。图4-4任务指引这里我们可以看到左上角的任务目标“ELIMINATEALLTHEENEMIES”,需要清除本关卡当中的全部敌人。该功能核心代码如下:ObjectiveManagerobjectiveManager=FindObjectOfType<ObjectiveManager>();DebugUtility.HandleErrorIfNullFindObject<ObjectiveManager,Objective>(objectiveManager,this);objectiveManager.RegisterObjective(this); 这里仅对任务显示功能代码做展示,任务要求以及达成条件也均采用了ObjectiveManager核心功能,在此不再赘述。当任务系统最终判定胜利任务完成以后会提示玩家胜利,进而自动跳转至游戏胜利场景界面,如4.3游戏的场景部分章节所述。瞄准与射击本课题所设计的射击游戏,最为核心的功能当属射击模块,本模块便主要介绍如何实现玩家射击以及瞄准动作。当玩家按下鼠标右键以后,会开启瞄准模式,此时再按鼠标左键则会从枪械当中发射出子弹,实现本功能的核心代码如下所示:privatevoidUpdate(){WeaponControlleractiveWeapon=GetActiveWeapon();if(activeWeapon&&m_WeaponSwitchState==WeaponSwitchState.Up){isAiming=m_InputHandler.GetAimInputHeld();}医疗包的获取本课题所设计的射击游戏当中有血量的设计,同时为了使得用户有较好的游戏体验也有回复血量的功能设计——医疗包。回复血量的核心代码在4.3游戏的主界面场景部分已做介绍,这里主要对医疗包的拾取功能做代码展示,该功能如下:voidOnPicked(PlayerCharacterControllerplayer){HealthplayerHealth=player.GetComponent<Health>();if(playerHealth&&playerHealth.canPickup()){playerHealth.Heal(healAmount);m_Pickup.PlayPickupFeedback();Destroy(gameObject);}}这里可以看到,在玩家拾取医疗包以后,玩家生命值会调整为治疗后生命,同时将地上的医疗包道具摧毁以达到玩家使用了该道具的效果,简单高效。游戏发布图4-5游戏发布工具当课题研究游戏开发完成以后,我们可以通过Unity3D引擎自带的发布工具将游戏打包如图4图4-5游戏发布工具在打包之前,首先要将全部场景添加至游戏生成工具当中,这里可以直接将资源栏中的场景拖拽移动进行添加,也可以通过点击对应按钮打开资源浏览器进行场景的添加。之后根据需求选择我们使用的平台,这里我们选择PC即可,PC平台下会生成.exe文件,可以直接在windows系统当中运行。当然,我们也可以选择更为便捷的WebGL平台生成Web端客户端,之后上传至对应发布平台便可以在网页当中玩到我们的游戏了。

游戏测试游戏开发完成后,还需要进行游戏测试与游戏发布。游戏的测试目的就是为了找出游戏中遇到的问题。程序中存在的bug和场景设计的问题。验证游戏的每个功能模块都能正通过经常进行游戏测试的运行,可以给玩家带来最好的游戏体验。只有游戏的基本功能和场景设计都经过测试并且不存在任何问题的时候,才能正式发布游戏以供玩家下载娱乐。当然有许多人认为界面测试最不重要,但恰恰相反界面测试是非常重要的。这里可以根据设计的文档创建方法,并且可以根据此页面生成静态HTML,css等几套可用的方案来进行。主要包括以下几个方面的内容:内容的布局是否合理正确,背景/色调是否正确美观,是否满足用户需求;页面在窗口框架中看起来是否正确美观,表单样式的大小和格式以及提交的数据是否已通过验证;页面元素容错列表,页面元素容错是否存在,页面元素容错是否正确,页面元素的基本功能是否实现,页面元素的外观以及页面元素是否正确显示都是我们要考虑的问题关键所在。具体到测试技术的介绍,测试技术又分为白盒测试与黑盒测试两种。白盒测试技术(WhiteBoxTesting)是用于输入代码的第一级测试。此测试方法是找到问题的最快最有效的方法。白盒测试的主要功能是测试对象的深度。至于代码的内部空间,由于开发人员熟悉作为代码编写的程序,因此需要对需要测试的部分进行重新编码,并且负责人已经了解了代码知识并可以使用工作中的软件。黑盒测试技术(BlackBoxTesting)内容主要分成以下这几个方面,主要测试的是功能部分,并且是覆盖全部的功能,可以测试兼容,性能等方面,并且可以两个一起测试,依据软件的需求,设置文档,虚构出客户场景跟随系统实行实际的测试,这种黑盒测试技术是测试技术中使用最多的测试技术,包括了测试的各个方面,一般需要考虑下面这几个方面:是否正确(正确性Correctness)是否可以运用(可用性Usability)可以测试边界达

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论