软件工程基于Unity3D的宠物医院模拟游戏的设计与实现Word格式文档下载.docx

上传人:b****5 文档编号:17430032 上传时间:2022-12-01 格式:DOCX 页数:37 大小:9.74MB
下载 相关 举报
软件工程基于Unity3D的宠物医院模拟游戏的设计与实现Word格式文档下载.docx_第1页
第1页 / 共37页
软件工程基于Unity3D的宠物医院模拟游戏的设计与实现Word格式文档下载.docx_第2页
第2页 / 共37页
软件工程基于Unity3D的宠物医院模拟游戏的设计与实现Word格式文档下载.docx_第3页
第3页 / 共37页
软件工程基于Unity3D的宠物医院模拟游戏的设计与实现Word格式文档下载.docx_第4页
第4页 / 共37页
软件工程基于Unity3D的宠物医院模拟游戏的设计与实现Word格式文档下载.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

软件工程基于Unity3D的宠物医院模拟游戏的设计与实现Word格式文档下载.docx

《软件工程基于Unity3D的宠物医院模拟游戏的设计与实现Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《软件工程基于Unity3D的宠物医院模拟游戏的设计与实现Word格式文档下载.docx(37页珍藏版)》请在冰豆网上搜索。

软件工程基于Unity3D的宠物医院模拟游戏的设计与实现Word格式文档下载.docx

第一部分:

绪论,主要阐述毕业设计选题的目的与研究意义、国内外研究现状以及本文的结构介绍;

第二部分:

介绍了开发游戏所用到的工具与插件介绍;

第三部分:

详细描述了游戏内的需求与设计;

第四部分:

详细描述了游戏内各个功能的制作与实现;

第五部分:

游戏的UI界面设计、描述游戏的整合与导出并进行测试;

第六部分:

总结游戏内的不足与今后的改进。

第2章开发工具介绍

2.1Unity3D介绍

Unity3D是一款由UnityTechnologies所研发的跨平台2D/3D游戏引擎,开发的游戏可以部署到多个主流平台,如常见的:

Windows、MacOS、Android与iOS。

除游戏开发外还可以实现视频制作,其对模型资源的兼容性高,多个主流建模软件生成的模型均可以在Unity3D中完美导入,并可以在原模型修改后自动更新。

Unity3D给用户提供了可视化操作界面,利用内置插件,可以让新手短时间内熟悉并开发出游戏原型。

Unity3D主要支持三种语言:

C#、UnityScript(多被称为“Javascript”)和BOO。

Unity2017.2测试版后的版本在新建中已经不再包含Javascript选项,但仍然支持使用,需在Unity编辑器外创建再导入。

2.2ProBuilder插件介绍

ProBuilder插件是一款Unity2018.1版本以上自带的官方建模插件,Unity2017.x版本可以直接在AssetStore下载使用。

此插件是3D建模和关卡设计工具的独特组合,为构建简单的几何体进行了操作优化处理,但也可以进行详细的编辑和UV展开。

使用ProBuilder可以快速构建结构复杂的地形、车轮和武器的原型,或制作自定义碰撞几何体。

主要特点有:

动态用户界面、挤出插入功能、建立多边形功能、多种规则形状和着色等。

2.3ProGrids插件介绍

ProGrids插件可以为我们提供视觉和功能上的网格,它们可以使所有操作都在三个轴上对齐。

Probuilder结合ProGrids使用可以提高建模速度,使构建的几何体构造更为精准。

2.4Ngui插件介绍

Ngui是一个功能强大的UI系统和Unity的事件通知框架,均使用C#编写,并严格遵循KISS原则。

它具有简洁的代码和极简的方法。

许多behaviour类都保持在两百行代码以下。

该插件全面支持ios、Android、Blackberry、win8、wp8、flash。

使用Ngui就像使用Unity,将现成的控件(例如按钮,复选框,滚动条和其他控件)拖放到场景视图中,或者使用类似于Lego的方法制作自己的控件。

将控件另存为预设体,即可在任何地方重复使用。

第3章游戏需求分析

3.1科普类游戏的需求分析

随着科学教育类电子游戏的发展以及教育理念的日新月异,科学教育类电子游戏已经被视为科学教育的一个非主流的形式[8]。

在如今电子游戏行业迅速的发展的时代下,科普类游戏较于一般游戏来讲,其主要以普及科学知识为主,娱乐为次,在家长眼里不会被认为是玩物丧志的游戏,得到了广大家长们的认可,游戏不局限于青少年,不同年龄层次的用户均能体验游戏。

3.2游戏功能需求分析

目前饲养宠物陪伴自己生活的人越来越多,功课有时候做的不够到位,宠物发生状况时不正当的处理方式导致问题更为严重。

游戏内最主要的是给人们普及疾病相关知识与处理知识。

因此宠物医院模拟游戏较为重要的功能有以下几个:

第一,游戏内玩家将模拟刚毕业到宠物医院工作的见习助理,根据自己的能力不断成长,提升自己的职位。

第二,学习功能。

玩家主要通过学习功能来获取宠物疾病的理论知识,也仅限于理论知识,模拟现实生活中医生需要在空闲时间额外看书学习的行为。

第三,测试功能。

这个功能是模拟医院内的考核制度。

主要考察书本内的理论知识。

为了能够重复玩家的记忆,答卷采用随机出题的形式展示,通过随机来出现重复的题目,巩固玩家在游戏内学到的知识。

第四,查看实际病例功能。

病例功能主要是让玩家学习到除了书本理论知识外的知识内容。

主要记录宠物真实病情案例,病情诊断条件与治疗方案。

3.3游戏玩法设计

从功能模块方面可以决定游戏的玩法,玩家通过控制人物移动触碰场景内的物体,根据提示解锁不同的功能,解锁测试功能后,则根据测试的分数判断是否具备解锁查看实际病例的功能。

判断游戏结束的标准有两个,一个是低于初始分,判定为失败;

一个是高于设定的值(可修改),判定为游戏通关。

具体的方法实现设计如下:

一,人物移动以及移动动画实现功能:

利用Unity自带方法来监听玩家对键盘的操作,从而控制人物移动;

利用Animator控制器,根据游戏内判断人物是否移动,从而改变动作的布尔值来改变人物不同的动画播放。

二,学习功能:

学习功能主要利用Ngui插件来完成界面,通过使用插件内自带的TweenAlpha脚本实现UI界面的动态效果,利用PlayForward方法控制UI显示,利用PlayReverse方法控制UI的隐藏。

三,测试功能:

首先利用SetActive控制测试功能解锁的开关是否在场景内显示,利用activeInHierarchy判断开关是否存在于场景内,若存在则开启测试功能;

测试题目则用Random.Range随机方法,在自定义的范围内随机生成一个整数,不同的数字将对应产生不同的题目。

四,职位功能:

此功能是定义游戏进度的一个标准,在后台定义玩家初始分数统一为0,之后通过测试功能改变自己的分数值,获得不同的职位,之后解锁新的功能。

低于初始分数则判断为游戏失败,结束游戏。

3.4本章小结

从宠物模拟医院的功能需求上进行分析,决定了游戏的四大功能模块。

在分析中确定了游戏的主要玩法以及实现功能模块用到的方法。

结合三部分内容得到了本文所研究的游戏的总体方案设计。

第4章游戏设计与实现

4.1场景设计

游戏主要由两个场景组成,一是游戏开始界面,二是游戏主场景,玩家主要在主场景内体验游戏。

场景主要利用Ngui插件、ProBuilder插件和ProGrids插件来完成制作。

4.1.1安装ProBuilder插件与ProGrids插件

打开Unity,点击Window-->

PackageManager,找到Probuilder与ProGrids,点击Install下载即可,如图3-1所示。

图3-1Probuilder与ProGrids插件安装

4.1.2配置人物动画

将人物模型chan拖入场景中,创建一个新的animator命名为playercontroller并双击打开动画窗口,将动画wait与walk拖入BaseLayer窗口并连接至图3-2所示。

图3-2动画配置

为了避免人物动作需要播放完后才能切换新的动作,需要点击图3-2白色箭头,然后在Inspector窗口找到HasExitTime,将勾选取消即可。

如图3-3所示。

图3-3

为后续控制人物移动与站立两种状态下的动画切换,需在Parameters里添加两个bool类型的变量,分别命名为wait和walk。

4.1.3人物移动实现

给人物模型分别添加Animator、Rigidbody与CapsuleCollider组件。

为防止人物长时间不动后会倒在地上,需锁定人物模型在x轴与z轴的旋转,在Rigidbody里找到FreezeRotation,将x轴与z轴勾选上即可锁定。

接着在模型下面添加一个新的脚本命名为player。

因为人物移动需要每一帧都检测,因此将函数写入voidUpdate里。

将人物移动速度设置为public,方便直接在unity界面中调整合适速度。

1.using 

System.Collections;

 

2.using 

System.Collections.Generic;

3.using 

UnityEngine;

4. 

5.public 

class 

player 

:

MonoBehaviour 

6.{ 

7. 

public 

float 

speed 

1f;

8. 

9. 

Animator 

anime;

10. 

11. 

bool 

wait;

12. 

walk;

13. 

14. 

void 

Start() 

15. 

16. 

//获取人物动画控件 

17. 

anime 

GetComponent<

Animator>

();

18. 

//人物初始为等待状态 

19. 

wait 

true;

20. 

walk 

false;

21. 

22. 

Update() 

23. 

24. 

25. 

horizontal 

Input.GetAxis("

Horizontal"

);

26. 

vertical 

Vertical"

27. 

Vector3 

direction 

new 

Vector3(horizontal, 

0, 

vertical);

28. 

29. 

if(direction 

!

Vector3.zero) 

30. 

31. 

change();

32. 

33. 

//角色旋转至指定方向 

34. 

transform.rotation 

Quaternion.LookRotation(direction);

35. 

//角色移动 

36. 

transform.Translate(Vector3.forward 

Time.deltaTime);

37. 

38. 

else 

39. 

40. 

41. 

wait=true 

;

42. 

43. 

anime.SetBool("

walk"

 

walk);

44. 

wait"

wait);

45. 

46. 

47. 

//避免出现特殊情况,全部设置为false 

48. 

change() 

49. 

50. 

51. 

52. 

53.} 

经过调试,当人物移动速度为2.5f时较为合适。

4.1.4设置相机跟随人物移动

相机跟随人物移动是游戏内必不可少的一部分,虽然直接将相机拖入到人物中也可以实现相机跟随,但会因为人物不断改变方向使相机不断抖动造成视觉效果不佳,因此需要在相机里添加一个脚本来控制相机跟随人物移动。

1.public 

camerafollow 

2.{ 

3. 

Transform 

target;

5. 

offset;

6. 

LateUpdate() 

transform.position 

target.position+offset;

11.}

将需要被跟随的人物拖入至target中,点击游戏播放,调整offset的值,使相机可以看到完整人物。

4.1.5场景搭建

利用ProBuilder与ProGirds插件,快速制作出学习用书柜、前台、医生办公室、等候室、宠物住院区,并将物体摆放好构建一个简易的宠物医院。

游戏内还需要创建一个空对象命名为GameObject,用于存放大部分控制游戏功能实现的脚本

图3-4简易宠物医院

4.2学习功能实现

学习功能是整个游戏流程的开始,玩家需要通过学习后才可以解锁其他功能。

学习功能同时也能给玩家科普宠物疾病知识。

游戏中将以模拟电子书本的形式展现。

4.2.1学习功能的ui设计

安装好Ngui插件后,上方开始栏会多出一个NGUI选项,点击NGUI-->

Open-->

WidgetWizard,创建一个新的UI界面,此时层级视图窗口会多出一个UIRoot,切换成2D界面,双击UIRoot,开始编辑。

在Ngui中,由于插件内只能识别Atlas内的图片,如需使用自己绘制的图片,需要将所有非插件内的图片选中,右键-->

NGUI-->

OpenAtlasMaker,然后把所选图片添加至新创建的Atlas,保存后即可使用。

Simpletexture用于放置图片,Lable用于编辑文字。

Ngui提供了方便快捷的按钮脚本,需要变为按钮的图片或文字,只需在界面内右键-->

Attach内添加boxcollider和buttonscript就能实现按钮功能。

给按钮额外添加buttonscale脚本,可以让按钮在鼠标移入移出时有大小变化。

图3-5游戏内学习目录

图3-6游戏内部分学习内容

4.2.2学习功能的事件触发实现

为了模拟生活中生活中需要走到书架前才能拿到书本学习,游戏内设定人物碰到书柜后才能打开学习功能。

当第一次解锁学习功能之后,就可以不再需要跑到书柜面前触碰才能学习,游戏界面左下角会生成一个学习按钮,点开后可直接查看。

因为需要人物触碰才能产生事件,所以需给书架添加boxcollider并设置合适大小。

给书架加入脚本,使用OnCollisionEnter方法来实现。

study3Dbutton 

//获取书本UI 

TweenAlpha 

dashuben;

//获取游戏界面快捷学习按钮 

GameObject 

studybutton;

OnCollisionEnter(Collision 

collision) 

Time.timeScale 

0;

dashuben.PlayForward();

studybutton.SetActive(true);

14.}

TweenAlpha是Ngui提供的一种能实现UI隐藏显示的脚本,给附加了此类脚本的物体,之后把脚本取消勾选,将From的值设置为0,texture类还需要把NGUITexture下的ColorTint设置成透明,设置完后就可以用PlayForward与PlayReverse来控制组件显示与隐藏。

代码中使用Time.timeScale方法来防止人物触碰物体后还能继续移动,不断触发打开UI页面的问题。

4.2.3学习内容选择与翻页的功能实现

给所需控制显示隐藏的UI添加TweenAlpha脚本。

学习按钮一开始处于未激活状态,因此需要在voidstart里设置。

bookUIClick 

//获取整块内容组件 

Q;

//获取需控制的学习内容 

neirong;

mulu;

q1;

q2;

//初始学习UI处于隐藏状态 

studybutton.SetActive(false);

//点击打开书本 

OnClickOpenBook() 

//关闭书本 

OnClickClose() 

dashuben.PlayReverse();

Close();

mulu.PlayForward();

1;

//返回目录 

OnClickReturn() 

//打开第一条知识 

OnClickQ1() 

Open();

ReturnOpen();

childQ1 

Q.

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

当前位置:首页 > 高等教育 > 文学

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

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