Unity游戏综合课程设计报告.docx

上传人:b****6 文档编号:6566839 上传时间:2023-01-08 格式:DOCX 页数:9 大小:1.36MB
下载 相关 举报
Unity游戏综合课程设计报告.docx_第1页
第1页 / 共9页
Unity游戏综合课程设计报告.docx_第2页
第2页 / 共9页
Unity游戏综合课程设计报告.docx_第3页
第3页 / 共9页
Unity游戏综合课程设计报告.docx_第4页
第4页 / 共9页
Unity游戏综合课程设计报告.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

Unity游戏综合课程设计报告.docx

《Unity游戏综合课程设计报告.docx》由会员分享,可在线阅读,更多相关《Unity游戏综合课程设计报告.docx(9页珍藏版)》请在冰豆网上搜索。

Unity游戏综合课程设计报告.docx

Unity游戏综合课程设计报告

湖北民族学院综合课程设计

 

项目名称:

Rpg游戏《我的奇妙之旅》

专业:

数字媒体技术

班级:

学期:

大三

成员:

姓名

学号

胡芳惠

031341302

裴王杰

031341315

唐青

031341326

 

数字媒体技术专业制

2016年7月

 

第一章项目概述

第2章项目研究内容

第三章项目关键技术

第四章项目实验测试

第五章项目结论

参考文献

第1章项目概述

本项目是基于unity3D平台开发的三维的RPG(冒险类)游戏:

英文名称为“themiraculousjourney”,又称为“我的奇妙之旅”。

这是一个通过玩家控制主角的行走、攻击、拾取,打败怪物、获取资源以便通关进入下一个关卡继续冒险的游戏,所以本游戏是一个偏生存类的游戏,需要玩家通过理性的分析是否去攻击怪物,而去获得最终的胜利。

和其他unity游戏相比,我们更注重玩家的体验,比如控制主角的动作的连贯性,技能释放的特效华丽及合法性等等,而作为一个3d类的游戏,我们采用第三人称视角去展示主角的的视角,让玩家不容易出现纯3d视角带来的不适,可以让玩家更快的去适应整个游戏的风格。

总的来说,我们小组所做的这款游戏集合了我们组内所有成员对以前所玩游戏的不足之处都加以改进,让游戏更加适应更多的玩家。

本文中所述的游戏项目开发工具是Unity3D自带的开发工具,叫做MonoBehaviour,选择的开发语言是c#。

项目的开发过程主要分为前期、中期和后期。

前期需要与导师、组员之间进行协调沟通,确定好游戏开发的类型为RPG冒险类游戏,然后组员之间对游戏的开发进行框架设计、游戏规则确定、游戏代码理论设计等前期的设计工作。

中期为游戏具体的开发环节,要根据前期的设计要求,查找好素材资源,包括游戏场景、游戏主角原型、NPC原型、UI素材以及音效等资源等,然后对游戏进行场景搭建、功能实现、UI设计、添加音效等操作来实现游戏的开发。

在后期需要对已经制作好的初级游戏进行不断的测试,找到并完善游戏中存在的BUG,最后将游戏发布出来。

第2章项目研究内容

在本次的综合课程设计中,我们小组设计的这个RPG冒险类游戏的主要游戏规则是:

主角寻找水源,躲避并攻击怪物来在游戏场景中延长生存时间,当水源和生存时间达到规定后在魔法阵中就可以进入下一关卡的游戏,中途主角可能会被怪物攻击死亡也会因为缺少水源而死亡。

所以在游戏的制作过程中需要小组成员完成的功能和模块琐碎而复杂,总体概括起来包括以下部分:

1.游戏场景的搭建:

在游戏的开始,我们需要通过导入素材资源搭建好整个游戏的两个关卡场景,给场景添加好灯光、天空等。

2.游戏角色的创建:

在整个游戏中,包括两个游戏角色,分别是主角和怪物,在创建游戏角色的过程中,首先要对导入后的游戏角色模型进行优化,使其适应游戏场景的运行;其次,要对游戏角色的动画系统进行设计,主角的动画系统包括了idle、run、attack、death四个状态之间的转换,怪物的动画系统相对简单,包括了walk、die、attack三个动画状态。

3.角色的控制实现:

角色的控制主要是主角控制,怪物的控制会相对简单一点,我们给没给怪物创建了一条路径,怪物会沿着不同的路径不断地巡逻,发现主角会自动进行追击。

主角的控制需要在游戏运行是通过玩家的手动控制,对于主角的移动我们采用的是通过鼠标点击屏幕控制角色运动的方式,然后对给摄像机添加一个跟随脚本,使得游戏镜头会一直跟着主角移动,实现第三人称游戏视角。

4.任务系统的实现:

根据游戏的前期设计,游戏的任务系统就包括了寻找水源、攻击怪物、达到生存时间进入下一关卡。

在这个阶段中要实现的功能有:

(1)拾取物品的功能:

通关判断主角与水源的距离来判断是否拾取,拾取后要修改物品的显示,拾取受体力值控制,当体力值不足时,需要杀死敌人获得体力值继续拾取水源;

(2)技能的实现:

根据鼠标位置确定技能释放位置,按键后播放特效,以及要UI中显示技能的冷却,技能的释放会受到主角魔法值的限制。

(3)敌人的自动攻击:

敌人会根据与主角之间的距离确定一个攻击范围,超出范围后会停止攻击,就近回到路径点继续巡逻。

敌人在攻击主角时会定时发功攻击,直到主角死亡。

(4)主角的初级攻击:

主角的初级攻击是使用自带的武器对敌人发动攻击,可以通过按键实现攻击,不受魔法值限制,到伤害值会比较小。

5.设计开始界面:

在进入游戏后给游戏添加了一个镜头拉进移动的动画,然后显示游戏标题,点击屏幕继续后会出现两个按钮事件来实现游戏的加载,加载游戏后,出现一个NPC对话框来交代游戏的背景和主角任务。

第3章项目关键技术

在游戏的制作中,我们是基于UNTIY引擎制作而成,同时还使用了NGUI插件制作UI界面、HUD插件制作血条跟随、fx maker插件制作特效、DialogueSystem插件制作对话等。

下面将对游戏中使用到的关键技术进行详细说明:

1.音效的实现

音效主要有背景音乐、敌人死亡音乐,攻击音乐等,不同功能的音效放在特定的对象下面,如实现背景音乐的添加,选择猪摄像景,添加一个AudioListener游戏组件,Component->Audio->Audio Listener;  

然后在相应的游戏对象上面添加Audio Source游戏组件,具体步骤如下:

  Component->Audio->Audio Source;

图3-1

2.NGUI插件的使用

NGUI插件主要是用来制作UI界面,在本项目中我们使用NUGI制作了游戏开始界面、主角血条、敌人血条、小地图、游戏结束界面等,使用起来十分方便。

在开始界面中,通过给主摄像机添加运动脚本实现了镜头拉近的效果,使用白色图片的缓慢消失实现场景渐显效果,logo的加载使用了NGUI的TweenAlpha组件制作动画,如图:

图3.2

开始按钮需要在添加按钮后添加脚本语言实现游戏场景的加载,使用Application.LoadLevel

(1);函数即可。

血条的的制作中关键部分是要给血条添加一个UISlider,使用组件里的value值控制血条的移动。

小地图的制作需要给UIROOT再添加一个摄像机,给主角和怪物脚下添加不同颜色的标识,然后主角和怪物们的移动在小地图中就可以通过标识观察。

3.敌人巡逻和攻击

我们首先为enemy预制体写了一个脚本,在脚本中我们首先定义一个gameobject类型的数组,然后让enemy从数组的第一个点出发,依次寻路,当到达最后一个点之后,便会重新返回,当这样定义完成之后,我们又新建了一个spawnEnemy脚本来管理所有怪物,这时在里面定义n个gameObject类型的数组,将事先定义好的点的集合在属性面板赋值,最后通过instantiate方法生成instantiate(enemyprefabs).GetComponent().points=point1;在生成位置点后通过代码实现敌人沿着位置点移动

Vector3endPos=points[currentPoint+1].transform.position;

this.gameObject.transform.LookAt(endPos);

transform.Translate(Vector3.forward*speed*Time.deltaTime);

敌人的追击通过判断主角与敌人之间的距离是否符合追击距离,如果符合追击距离,敌人就会追击主角并发功攻击:

if(offset>0.5f&&offset<=2.5f)

{transform.Translate(Vector3.forward*2*speed*Time.deltaTime);}

if(offset<=0.5f)//当距离小于1时,怪物每隔三秒攻击主角一次

{//播放攻击动画

anim.SetBool("isAttack",true);

timer+=Time.deltaTime;

if(timer>=IntervalTime)

{

player.GetComponent().SubHP(damage1);

timer-=IntervalTime;}}

4.主角的移动和攻击

主角的移动是通过鼠标点击控制的,通过鼠标位置向地面生成一个射线并记录射线点,然后确定主角的移动位置:

Rayray=Camera.main.ScreenPointToRay(Input.mousePosition);

RaycastHithitInfo;

boolisClickGround=Physics.Raycast(ray,outhitInfo);

if(isClickGround&&hitInfo.collider.tag=="Ground")

{

LookAtTarget(hitInfo.point);

}

主角技能攻击也是使用射线来计算攻击位置的:

Rayray=Camera.main.ScreenPointToRay(Input.mousePosition);

RaycastHithitInfo;

boolisGround=Physics.Raycast(ray,outhitInfo);

if(isGround&&hitInfo.collider.tag=="Ground"&&State.MP>=30)

{

GameObjectgo=Instantiate(skillPrefabs,hitInfo.point,Quaternion.identity)asGameObject;

State.MP-=30;

foreach(GameObjectenemyingos)

{

if(Vector3.Distance(hitInfo.point,enemy.transform.position)<2f)

{

enemy.gameObject.GetComponent().HP-=80;

if(enemy.gameObject.GetComponent().HP<=0)

{

gos=DeleAt(gos,enemy);

}

}

}

Destroy(go,3f);

}

 

第4章项目实验测试

游戏开始界面:

NPC界面

游戏运行图

捡东西

特技攻击

玩家死亡

 

第5章项目结论

一个基于UNITY的RPG游戏的完成,也标志着本次综合课程设计的工作到达尾声。

在整个的设计制作过程中,我们收获了许多,同时发现了一些问题,最后我将对今后的工作有更多的展望。

 

在设计开始之前,本人大致了解了简单的游戏项目开发,但是由于没有系统地学习脚本编写,所以在动手制作游戏过程中,经常卡在脚本的编写上。

例如前面设计中的路点设置的脚本就成为开发中很大的一个难题。

在查阅资料和视频之后,成功将一些问题解决,但是薄弱点依然存在。

同学和老师在游戏的开发中给予了本人很大的帮助,推荐了一些有用的资料和教程,让游戏制作成功。

 

游戏虽然制作成功,但是存在着以下问题:

 

1. 界面不美观; 

2. 游戏在测试中出现较严重的卡顿和延迟现象,说明游戏优化不足;

3. 关卡较为简单,模型和素材搭配不合理; 

4. 功能上较为简单,可玩性不高。

 

Unity3D是一款非常强大的游戏开发软件,它有着强大的跨平台能力,在本设计的最后测试阶段中可以看出,同样一款游戏,仅仅因为封装类型不同,在PC平台和在手机平台可以无差别运行。

这样一来,免去了游戏在不同平台之间移植的复杂工作,同时节约了开发成本。

可以预料,在接下来的一段时间,Unity3D将成为游戏开发行业的热门工具。

也就是说,学会运用这门工具,才能更好地在游戏开发行业发展。

 

在今后的工作中,本人将继续学习,此毕业设计的开发过程中遇到的一些问题和游戏本身存在的一些问题将是本人今后一段时间努力学习和工作的方向,同时,还将用心学好Unity3D这个工具。

 

参考文献

[1] 浅析Unity3D开发游戏流程及常用技术.中国论文网.. 

[2] Unity3D.XX文库. . 

[3] 宣雨松.Unity3D游戏开发[M].北京:

人民邮电出版社,2012.06:

165~183. 

[4] 龚老师.Unity4.3游戏开发项目实战[M].北京:

中国水利水电出版社,2014.02:

13~175. 

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

当前位置:首页 > 幼儿教育

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

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