基于Unity3D的格斗游戏的设计与实现.docx

上传人:b****4 文档编号:6159261 上传时间:2023-05-09 格式:DOCX 页数:87 大小:5.82MB
下载 相关 举报
基于Unity3D的格斗游戏的设计与实现.docx_第1页
第1页 / 共87页
基于Unity3D的格斗游戏的设计与实现.docx_第2页
第2页 / 共87页
基于Unity3D的格斗游戏的设计与实现.docx_第3页
第3页 / 共87页
基于Unity3D的格斗游戏的设计与实现.docx_第4页
第4页 / 共87页
基于Unity3D的格斗游戏的设计与实现.docx_第5页
第5页 / 共87页
基于Unity3D的格斗游戏的设计与实现.docx_第6页
第6页 / 共87页
基于Unity3D的格斗游戏的设计与实现.docx_第7页
第7页 / 共87页
基于Unity3D的格斗游戏的设计与实现.docx_第8页
第8页 / 共87页
基于Unity3D的格斗游戏的设计与实现.docx_第9页
第9页 / 共87页
基于Unity3D的格斗游戏的设计与实现.docx_第10页
第10页 / 共87页
基于Unity3D的格斗游戏的设计与实现.docx_第11页
第11页 / 共87页
基于Unity3D的格斗游戏的设计与实现.docx_第12页
第12页 / 共87页
基于Unity3D的格斗游戏的设计与实现.docx_第13页
第13页 / 共87页
基于Unity3D的格斗游戏的设计与实现.docx_第14页
第14页 / 共87页
基于Unity3D的格斗游戏的设计与实现.docx_第15页
第15页 / 共87页
基于Unity3D的格斗游戏的设计与实现.docx_第16页
第16页 / 共87页
基于Unity3D的格斗游戏的设计与实现.docx_第17页
第17页 / 共87页
基于Unity3D的格斗游戏的设计与实现.docx_第18页
第18页 / 共87页
基于Unity3D的格斗游戏的设计与实现.docx_第19页
第19页 / 共87页
基于Unity3D的格斗游戏的设计与实现.docx_第20页
第20页 / 共87页
亲,该文档总共87页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于Unity3D的格斗游戏的设计与实现.docx

《基于Unity3D的格斗游戏的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于Unity3D的格斗游戏的设计与实现.docx(87页珍藏版)》请在冰点文库上搜索。

基于Unity3D的格斗游戏的设计与实现.docx

基于Unity3D的格斗游戏的设计与实现

本科毕业设计(论文)

基于Unity3D的格斗游戏的设计与实现

DesignandimplementationoftheGameofFightingbasedonUnity3D

 

内容摘要

本设计是基于Unity3D所开发实现的一款RPG(Role-playingGame-角色扮演游戏)-格斗游戏,以游戏的逻辑流畅性、界面工整简洁与还原最原始最通俗的角色扮演类游戏为设计目标,具有准确输出各类板块功能、易懂、易操作、界面简洁美观的3D一体化系统设计与运行简易方便等强大功能为一体。

本设计前端采用Unity3D+NGUI+3DMAX2018+Photoshop2018等工具来设计一个具有真实感的3D场景界面,此场景界面不仅简洁美观而且通俗易懂,极大程度地还原了最原始状态的RPG(Role-playingGame-角色扮演游戏),加强了人机交互功能,使得玩家可以轻易上手游戏的每一个部分;后端主要采用MicrosoftVisualStudio2017工具,全程应用C#语言实现了游戏内部各个环节的紧扣性与代码编译灵活性从而使得游戏操作的简易性提高;总体实现了一个具有现代化RPG(Role-playingGame)-角色扮演游戏功能的系统。

游戏强大的视觉体验以及可操作性成为当代热门话题,采用各种先进的技术以提高游戏内外部各个部分的统一性为原则,充分展示了游戏逻辑的准确和重要性,从而进一步吸引广大玩家的青睐。

关键词:

RPG(Role-playingGame-角色扮演游戏)、C#、Unity3D、NGUI、MicrosoftVisualStudio2017

 

Abstract

 

ImplementedbythisdesignisbasedonUnity3D-aRPG(Role-playingGame)–whichisnamedTheGameofFighting.TheGamelogicfluencyisconcise,neatinterfaceandrestoretheoriginalisthemostpopularrole-playinggamesasthedesigngoalandthisdesignhasthefunctionofaccurateoutputofallkindsofplates,interfacesimpleandeasytounderstandeasyoperation,beautiful3Dintegrationsystemdesignandpowerfulfunctionssuchasoperationsimpleandconvenient.

ThisdesignFrontEndusingUnity3D+3DMAX2018+Photoshop2018andsoontodesigntheinterfaceofarealistic3Dscene,thesceneinterfacenotonlysimpleandbeautifulbutalsoeasytounderstand,drasticallyreducingthemostprimitivestateofRPG(Role-playingGame),strengthenthefunctionofhuman-computerinteraction,allowingplayerstoeasilyeverypartoftheGame;TheBackEndmainlyadoptsMicrosoftVisualStudio2017tools,andtheC#languageisappliedthroughoutthewholeprocesstorealizethetightnessandflexibilityofcodecompilationinallaspectsofthegame,soastoimprovethesimplicityofthegameoperation.TheoverallimplementationofamodernRole-playingGamefunctionofthesystem.

Nowadays,thepowerfulvisualexperienceandoperabilityofthegamehavebecomeahottopic.Theuseofvariousadvancedtechnologiestoimprovetheunityofallpartsofthegameastheprinciple,fullydemonstratetheaccuracyandimportanceofthegamelogic,soastofurtherattractthefavorofthemajorityofplayers.

Keywords:

RPG(Role-playingGame)、C#、Unity3D、NGUI、MicrosoftVisualStudio2017

第一章绪论

1.1项目背景与开发设计目标

随着时代的发展,游戏的设计与开发成为了当今必不可少的话题。

Unity3D[3]是当今炙手可热的游戏开发工具之一,随着当代游戏开发的不断进步,给游戏玩家带来了非常棒的游戏体验感,也为大众游戏设计爱好者提供了各种设计游戏所需的平台与工具,从而极大程度地减少了游戏设计者开发游戏的时间成本与经济成本,提高了效率。

本项目主要利用Unity3D系统来实现一个现代化RPG游戏类型的项目,进一步加深游戏玩家对最原始的RPG游戏的理解,同时也分享一些开发设计经验从而得以解决一些游戏设计爱好者在游戏开发中遇到的同类BUG或其他代码块上的问题。

1.2项目开发设计意义

Unity3D为广大游戏开发设计爱好者提供了一个能将自己对游戏开发的想法得以展现和发挥的平台。

本项目的开发设计主要从最原始的RPG游戏设计理念[1]出发,同时或多或少帮助了广大游戏爱好者对最原始的RPG类型游戏的理解,实现最通俗易懂的RPG类型游戏的设计理念,让广大游戏开发设计爱好者更加热爱从事于游戏的开发设计,从而推动游戏开发的进一步发展。

Unity3D游戏引擎简单清晰、兼容性强,当然也是可跨平台使用、简单易学、至关的开发语言(C#等易上手编程语言),即本项目的开发设计意在吸引广大的游戏开发设计爱好者进一步对Unity3D的理解,随着当今游戏开发平台市场人才的需求量不断增大,因此,Unity3D游戏开发设计无疑是当今最值得着笔篇章的话题。

1.3项目开发设计方法与技术

对于角色扮演类游戏(Role-playingGame)的理解,简单地说,它是大众所青睐的虚拟游戏世界,表达着真实的场景与剧情的人性化,在游戏里提供虚拟的游戏角色操控,极大程度地使得玩家在游戏世界里体验着“第二人生”。

RPG框架的研究与设计自RPG问世以来不断地进步,发展至今成为了广大游戏设计爱好者云集的平台。

RPG游戏的设计比较复杂多样,其系统多为格斗、剧情、任务、情景对话、人机交互、装备、任务等系统为主,其中格斗系统为RPG游戏设计的核心系统。

[1]

格斗系统主要包括:

1.属性系统:

属性系统是RPG游戏中最通俗的系统,它包含有主角、装备、药品、NPC、技能、状态、怪物等各自的属性值,通过各类属性值运算可得出在格斗中各种逻辑交互的数值。

2.状态系统:

状态系统是指在游戏运行时,角色、NPC、怪物等操控移动或系统自动移动的物体状态的属性值,即被控制角色是否处于运动状态(即当玩家点击鼠标或操控键盘移动从而被监听器检测到数值的变化);NPC是否处于静止状态;怪物是否处于攻击状态等。

当然这些状态是可以同时存在的,因此这些状态需要在系统运行程序中利用不同的数值来表达和区分。

所以格斗的规则越多,状态系统的逻辑就越复杂。

因此在游戏开发之前要做一系列的可行性方案,不然在后续的开发设计与维护中显得格外吃力困难。

3.行为系统:

行为系统即表达游戏物体与控件在运行时所实现出的特性,例如声音行为、特效行为以及动作行为等都受行为系统所管理。

4.人工智能(AI)系统:

人工智慧系统主要支持于人机交互,即在格斗过程中,角色与怪物产生碰撞所发生的数据或属性的改变,从而产生各种效果,即当怪物或角色其中一方属性值越高或者功能越齐全,则相应的人工智能设计过程也就越加复杂,需要通过不一样的算法加以结合输出来得出一系列的人工智能指令。

1.4项目开发设计内容介绍

1.4.1游戏介绍

本项目开发设计的内容主要分为两大板块,即游戏基本框架设计和游戏整体系统实现,通过Unity3D来实现一款以《冒险岛》为背景的基于电脑端的单机RPG游戏,主要设计包括:

3D场景布局、人物素材的导入引用、角色创建与功能输出、游戏内外部各个功能模块的应用、各场景元素的添加、角色任务商店系统的设计、整体代码块的衔接以及对最终实现的游戏进行打包调试等为此游戏项目的开发设计内容。

游戏类型:

RPG

游戏平台:

Windows

游戏风格:

乡村野外田园

游戏玩法:

玩家通过点击NPC接受任务、购买装备、购买药品然后进入野外怪物格斗区域进行格斗消灭怪物,通过消灭怪物得到经验和消灭相应数量的怪物可获得相应的金币奖励。

1.4.2游戏场景

作为游戏的主要交互区域,游戏场景承载了玩家在游戏中的大部分交互,即游戏场景的重要性不言而喻。

本设计游戏场景可分为2D和3D模式,2D场景由UI界面通过一个个图像、Sprite、Label、button以及各个UI界面控件拼凑而成,虽然比起3D的效果略显逊色,但2D界面在游戏里的精确表达也至关重要。

本设计主要通过对乡村野外田园的风格进行设计,其主要元素有树木、河流、山川、山丘、天空、房屋、桥梁、地砖等3D素材进行拼凑而成,风格怡人,线条感舒适,装饰丰富,使玩家在视觉上得以放松,游戏内部分场景如下图所示:

图1-1游戏2D界面图

图1-2游戏3D界面图

1.4.3游戏角色

6一款游戏是否吸引人,其角色的模型起到了至关重要的作用,在本设计中,角色模型的设计主要采用3DMAX技术构造而成,角色的类型为卡通类型,因此会受到广大游戏玩家的喜爱。

图1-3游戏角色-魔法师

图1-4游戏角色-剑士

1.4.4游戏系统

本设计中的游戏功能系统主要分为以下几类:

◆游戏载入

◆创建游戏

◆任务系统

◆商店系统

◆背包系统

◆状态系统

◆技能系统

◆装备系统

◆NPC、怪物系统

以上几类系统为本设计基本的游戏功能,这些功能在RPG类型的游戏中都是最常见的,通过这些功能系统即可展现一款RPG游戏的核心操作与运行,其中最为核心的是技能系统,一款RPG游戏的受欢迎程度大多取决于技能的实用性与技能动画华丽性。

第二章开发技术与工具

2.1前端架构

本项目主要采用Unity3D+NGUI技术。

2.1.1Unity3D

Unity3D在本设计中起到一个整体全面的框架构建作用,它使得游戏设计的操作更加简单化,使得三维效果的构建以及全局场景的布置更加系统专业。

同时,它也可以发布移动端和客户端等多种类型的游戏,这极大程度地方便了游戏设计者。

2.1.2NGUI

NGUI是严格遵循KISS原则并用C#语言所编写的Unity3D插件[1],提供强大的UI系统和事件通知框架。

2.2后端技术

本项目后端技术处理主要运用MicrosoftVisualStudio2017开发工具。

2.2.1VisualStudio

本设计主要应用VisualStudio来编写代码,所应用的语言为C#,其功能完善,界面简洁,适用性极高,为从事Unity3D工作者提供了一个极佳的编程环境,其目前也是Windows平台当中功能最完善、最流行的应用程序的集成开发环境。

2.3开发环境

2.3.1软件环境

表2-1软件信息表

序号

名称

版本

备注

1

Windows10企业版64位

10.0,版本17134

操作系统

 

2.3.2硬件环境

表2-2硬件信息表

序号

名称

配置

备注

1

MSI-QE626QD-1077XCN

8G内存+1TB机械硬盘

2

CPU

IntelCorei7-6700HQCPU-2.60GHz

3

显卡

NVDIAGTX960M

2.3.3开发工具

表2-3开发工具信息表[1]

序号

名称

版本

备注

1

Unity3D

2019.2.0f1

游戏开发工具

2

UnityHub

2.2.2

Unity启动器

3

MicrosoftVisualStudio

2017

编译器

4

NGUI

2018.3.0

Unity插件-UI界面处理工具

5

AdobePhotoshopCC

2018

图像处理工具

第三章游戏基本框架设计

3.1游戏开始场景界面设计

3.1.1游戏场景素材导入

首先在Unity3D开发环境下进行游戏场景的搭建,即导入模型(山丘、树木、房屋、天空和水面等的模型添加)。

导入后的场景在文件夹Assets→RPG→Prefab→Map中,效果如下图所示:

然后在Hierarchy栏上点击MainCamera,将MainCamera移动到场景当中后在左上角菜单栏中点击GameObject→AlignWithView即使得Camera与当前视觉保持一致,效果如下图所示:

在游戏中,默认鼠标样式的图形也需要进行修改。

即通过File→BuildSetting→PlayerSetting,更改游戏场景默认鼠标,具体操作如下图所示:

图3-3默认鼠标设置操作图

为了进一步加强场景画面的真实性,还需额外给场景添加天空和水面的效果,在Assets→StandardAssets→Water(Basic)中,将“DaylightSimpleWater”拖到场景当中,然后调节适当的高度和大小使得水面效果在场景中显示。

与水面效果类似,下一步导入天空盒子(Skyboxes)然后根据自己的审美选择喜欢的天空样式(Skyboxes→Textures中的Materials)添加进MainCamera内部即可,具体操作如下图所示:

图3-4游戏场景素材添加操作图

3.1.2实现镜头拉近效果

首先将MainCamera拉到离主场景界面比较远的地方(形成远近冲击效果),记住此时Camera的位置坐标(Transform中X,Y,Z值),因为要控制Camera的移动,所以给MainCamera添加一个脚本来控制它的移动,具体代码如下:

图3-5控制镜头拉近效果代码图

以上代码首先定义镜头移动时的速度(20)以及镜头最终停止的位置(Z轴-25),我一开始设置的镜头初始位置为Z轴方向上的-60。

图3-6镜头初始位置图

通过Update()方法由系统自动调用且判断MainCamera的位置是否小于停止运动时的位置,若MainCamera的最终位置小于-25则由Vector3向量表示方法[1]输出Camera的最终位置且保持在视野当中不变,因此实现游戏镜头拉近的效果。

3.1.3使用NGUI设计游戏开始场景的UI界面

在镜头拉近效果实现结束后,还需要实现相应的用户交互功能,在此我主要通过使用NGUI控件来设计游戏开始场景的UI界面。

(在此我强调一下NGUI插件的使用,NGUI作为一款Unity3D里兼容性比较差的UI界面设计插件,它的导入成功或失败跟Unity3D的版本相关性极大,一般Unity3D在2018以上的版本都要求最新版本的NGUI。

图3-7NGUI控件图

当NGUI成功导入Unity3D后,通过新建一个PrefabToolbar来开始实现UI界面的设计,即NGUI→Open→PrefabToolbar,然后可以把PrefabToolbar放在功能栏下以方便使用,如下图所示:

然后通过NGUI→Open→AtlasMaker将UI界面设计的素材添加进去,具体操作如下图所示:

图3-8AtlasMaker添加元素图

接着在场景中通过新建Sprite添加设计好的游戏LOGO以及简单的UI控件(将“NewGame”和“LoadGame”按键合并在buttonContainer下),效果如下图所示:

图3-9开始场景UI设计图

 

在实际操作中,“NewGame”和“LoadGame”按键是默认隐藏的,需要通过玩家点击监听后显示出来,即在开始时显示游戏LOGO以及“PRESSANYKEYTOSTART”标签,当玩家点击任何地方或按下任意键时显示“NewGame”和“LoadGame”按键。

因此在“PRESSANYKEYTOSTART”标签下新建一个脚本以实现相应的功能。

即当在开始界面运行时,按下任意按键(或鼠标点击)时,显示“NewGame”和“LoadGame”按键,结果如下图所示:

图3-10标签实现代码图

 

图3-11游戏开始场景界面图

接下来再进一步处理“NewGame”和“LoadGame”按键的操作,首先给为buttonContainer添加一个脚本以控制两个按键的功能实现,具体代码如下:

图3-12UI控件代码图

之后在“NewGame”和“LoadGame”按键的OnClick控件下指定buttonContainer里的方法,然后设置相应的点击事件即可:

图3-13实现按键方法指定操作图

以上设置完成后,游戏开始界面已经基本实现,下一步是位游戏场景添加背景音乐以及相应的按键点击声音,即在MainCamera下添加相应的背景音乐(即AddComponent添加AudioSource),然后将背景音乐拖入即可,再在各个按键中添加相应的UIPlaySound(内置脚本,在相应的控件下AddComponent添加即可),然后将相应的按键音拖入即可,具体操作如下图所示:

图3-14背景音乐添加操作图

图3-15按键音添加操作图

3.2角色创建

3.2.1角色模型以及相关UI素材导入

首先创建角色初始登陆所在场景的UI界面。

角色创建的背景采用与游戏初始加载的MainCamera下的2D界面一致,且MainCamera设置为不移动静止状态。

创建游戏的UI界面中,其角色名字输入框用NGUI-PrefabToolbar里的SimpleInputField控件实现,效果如下图所示:

 

图3-16角色登陆场景界面图

将角色资源包导入,角色模型分为两种,即魔法师与剑士。

里面包含有两个角色相应的动画资源,将角色拖进游戏场景里进行位置的设定以及相应皮肤资源的渲染指定,然后在两个角色相应的动画资源里找到对应动作的动画进行指定,之后存入Prefabs包里以便后续使用,进行添加完毕后,相应的效果图如下:

 

图3-17魔法师-角色创建图

图3-18剑士-角色创建图

接下来将实现角色更换的功能,在角色创建UI界面中,我已设置好Preview与Next的按键,即点击此两种按键可进行游戏角色模型的切换,因此创建一个空的GameObject(将它命名为characterCreation)控件将此功能实现,然后将两个角色的站立动画(Idle动画)以及角色名字输入框控件进行指定即可,其中角色切换的核心代码如下图所示:

图3-19角色切换代码图

(1)

图3-20角色切换代码图

(2)

即当切换角色模型的时候,需要设置只显示其中一个角色,即当选择魔法师角色时,剑士角色设置为隐藏,即在以上脚本里添加一个UpdateCharacterShow()方法然后在其中添加了一个函数来实现未选择的角色模型设置隐藏,同时运用SetActive()方法来实现被选择角色的显示,之后在各方法里更新角色模型的显示时直接调用UpdateCharacterShow()方法即可,最后在角色选择界面中的两个角色选择按键(Next按键与Preview按键)中指定characterCreation方法里的点击事件方法(在OnClick事件中将方法Method改为characterCreation中的

OnNextButtonClick()与OnPrevButtonClick())即可,具体操作如下图所示:

图3-21角色切换操作图

3.2.2角色控制的实现

首先设置游戏运行时,鼠标的点击事件,即当游戏检测到鼠标的点击指令时输出相应的行为转换,在游戏内部设置检测鼠标的点击事件然后将该指令的表达形式转变为射线即表达Unity3D中Camera的点换射线方法ScreenPointToRay()方法,接着在相应的点击物件中添加碰撞器以检测碰撞的发生与否(在此可以通过设置标签(Tag)的方法来检查符合要求的碰撞信息,后续即可方便地直接调用Tag里面的信息),即在游戏场景界面Map里的Terrain类物体都视为可被检测到的点击物体,当点击事件实现后可为点击添加点击效果,即在脚本中实例化点击效果然后直接将点击效果导入即可,此部分核心代码如下图所示:

 

图3-22实现点击事件代码图

当点击事件实现以后,接着添加(PlayerDir)脚本来处理角色随点击方向的方向朝向改变,即在获得点击目标后,需要改变角色站立的方向,其代码如下:

图3-23角色朝向代码图

(1)

 

图3-24角色朝向代码图

(2)

角色朝向的功能实现以后,将处理角色移动的功能。

首先为角色添加一个CharacterController(控制器)来对角色进行操控,

图3-25角色控制器添加

 

然后给角色添加相应的移动脚本(PlayerMove)来对其进行移动操控,代码如下:

图3-26角色移动代码图

因为刚开始的时候,targerPosition的初始坐标为(0,0,0)因为当检测到点击事件后会自动移动,则需要在角色朝向的Start()方法里(PlayerDir)初始化targetPosition为移动后角色的位置,则需添加的代码为:

targetPosition=transform.position;即可,移动效果如下图所示:

图3-27角色移动效果图

 

角色移动时也有相应的动画,即动画效果的导入如下:

图3-28角色动画效果导入

角色动画导入后,需要在(PlayerMove)脚本中实现角色状态的控制,即角色的站立、移动动画的播放,即在角色物体下新建一个(PlayerAnimation)脚本控制角色状态的播放,然后在(PlayerMove)脚本中进行指定各种状态的信息进行初始化,之后根据状态的变化在(PlayerAnimation)脚本实现角色移动的控制即可,其代码如下图所示:

图3-29实现角色动画播放

3.2.3实现镜头跟随主角移动以及镜头视觉的更改

在Camera下添加实现跟随主

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

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2