《基于Unity3d台风预防科普游戏的设计与实现.doc》由会员分享,可在线阅读,更多相关《基于Unity3d台风预防科普游戏的设计与实现.doc(34页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、摘要台风属于自然灾害中较严重的一种1,它在过境时,经常会带来暴风雨天气,海面翻起巨浪,威胁航海安全;登陆后,可能会摧毁各种建筑设施,威胁生命安全。所以在台风来临之前,做好一切预防措施起着举足轻重的作用。随着时代的不断进步,游戏也成为了不少人自我放松,疏解压力的方式。它给我们带来快乐,满足我们自身的精神需求,若同时可以学习到更多知识,也不失为一种舒适的学习方式。本研究项目的主题,就是将游戏和安全教育知识联系起来。这是一款关于台风预防措施的科普游戏,应用photoshop设计,绘制与编辑素材,3dsMax制作以及修改游戏中所需模型,GoldWave软件对游戏中的合成语音、音效等音频进行处理,游戏中
2、的UI界面采用Unity3d引擎中的UGUI制作,其他部分使用碰撞系统,动画系统等,将台风预防的知识嵌入游戏当中,以连续剧情的方式展现,带来丰富色彩的感官享受,使玩家更容易对知识进行吸收和记忆。游戏中,玩家可以学习到在台风来临前的各种应急预防措施,比如检查门窗,囤好粮食,备足药品等,补充安全教育知识,不至于在灾害来临时手足无措毫无准备。在生活中,每个人面对各种安全隐患也应当具备防范意识,即对风险做的准备、防御、减少损失的策略及建议、引导等。可以看出,科普类游戏具有很大的发展前景,在目前市场上,并未发现有相似类型的游戏,本游戏项目是市面上少有的游戏之一。关键词:Unity3d;台风预防;科普游戏
3、AbstractTyphoon is one of the most serious natural disasters. When it passes through the country, it often brings heavy wind and rainstorm, which causes huge waves on the sea and threatens the safety of navigation. After landing, it may destroy various construction facilities and threaten the safety
4、 of life. So before the typhoon, it is very important to take all the preventive measures. With the continuous progress of the times, games have become a way for many people to relax themselves and relieve pressure. It brings us happiness and meets our own spiritual needs. If we can learn more knowl
5、edge at the same time, it is also a comfortable way of learning.The theme of this research project is to link games and safety education knowledge. This is a popular science game about typhoon prevention measures. It uses Photoshop to design, draw and edit materials, 3dsmax to make and modify models
6、 needed in the game, GoldWave software to process synthetic voice, sound effect and other audio in the game. The UI interface in the game is made of UGUI in Unity3d engine, and other parts use collision system, animation system, etc. to prevent typhoon Knowledge embedded in the game, in the way of c
7、ontinuous plot show, bring rich color sensory enjoyment, so that players are easier to absorb and remember knowledge. In the game, players can learn all kinds of emergency prevention measures before the arrival of typhoon, such as checking doors and windows, hoarding food, preparing enough medicine,
8、 etc., to supplement safety education knowledge, so as not to be unprepared when disaster comes. In life, everyone should also have a sense of prevention in the face of various security risks, that is, the preparation, defense, loss reduction strategies, suggestions, guidance, etc. It can be seen th
9、at popular science education games have a great development prospect. At present, no similar games have been found in the market. This game project is one of the few games on the market.Keywords:Unity3d Typhoon prevention Popular science games目录第一章绪论11.1研究背景及意义11.2国内外发展情况11.3论文组织结构2第二章开发工具介绍32.1Unit
10、y3d游戏开发引擎32.1.1Unity3d引擎介绍32.1.2Unity3d常用函数32.23dsMax 2014软件介绍42.3GoldWave软件介绍42.4Adobe Photoshop CS6 软件介绍4第三章游戏设计53.1游戏说明53.1.1游戏简介53.1.2游戏操作说明53.2场景设计53.3科普内容63.4物体交互设计63.4.1室内场景63.4.2户外场景73.4.3购买食材场景7第四章游戏实现84.1UI界面84.1.1界面功能84.1.2界面制作94.2场景搭建124.3动画系统134.4碰撞检测184.5声音系统20第五章游戏测试235.1设备环境235.2测试用例
11、与结果23第六章总结24广东东软学院本科毕业设计(论文)第一章 绪论1.1 研究背景及意义随着时代的不断进步与发展,我们生活中已经处处都存在着互联网的影子,从现金付款到手机支付,从车站买票到APP购票,从像素游戏到3D大作,娱乐与生活质量的提高,这是互联网时代的趋势,我们已经有许许多多互联网与生活紧密联系的例子。我们看到了优异之处,互联网的飞速发展,给人们带来数不尽的便利。这也意味着,人们的生活和学习都发生了深刻变革,从最初的“读文”、“读图”时代,已经来到了“读屏”时代13。但同时自然灾害也更是频频发生,近年来,全球气温一直有不断升高的趋势,中国多地发生地震,台风也是来势汹汹。2018年,“
12、山竹”,“佛罗伦斯”,“飞燕”等台风给世界各地带来了重大创伤,而如何做好预防也是我们当下必须予以高度重视并且掌握预防措施的大问题。因此,安全教育问题一直是社会各界关注的重点问题,传统的安全教育一般是通过书本、多媒体、安全演练等方式,但这些教育过程相较来说十分枯燥无味12。而众所周知,科普教育游戏可以激发学习兴趣与热情,提升学习效果11。所以,本课题的研究就是将自然灾害台风预防措施的科普知识与当下娱乐方式之一的游戏结合起来,将台风预防的知识嵌入游戏当中,在轻松愉快的环境里,以连续剧情的方式展现,以娱乐的形式让玩家获取知识,了解台风的各种预防措施,比如检查门窗,囤好粮食,备足药品等,补充安全教育知
13、识,不至于在灾害来临时手足无措毫无准备。本游戏带来丰富色彩的感官享受,使玩家更容易对知识进行吸收和记忆。1.2 国内外发展情况目前,国内外的科普教育游戏较少,科普教育游戏的开发者寥寥无几。但科普类游戏其实已经有了产业化发展的趋势。在信息时代,游戏对青少年的影响力巨大,若以游戏本身的优势来化解单调乏味的学习形式,倡导这一新型的的教育模式,是十分具有积极意义的。以往的安全教育都是以演习等方式进行,当人数众多的时候,可能无法保证每个人都能了解各项措施,比如消防演习时,示范使用灭火器的操作,在无法让每个人都实际操作的情况下,肯定存在一部分人还是不明所以。而游戏则可以弥补这部分缺陷。近几年,也有一部分企
14、业开始开发教育游戏这块新领地,但进军的大部分是语数英等文化学科内容的游戏类型,鲜少人踏足科普安全教育知识这一方向,由此可见,此类游戏具有很大的发展空间。1.3 论文组织结构 本篇论文将针对游戏项目,简述使用到的各个软件以及在本游戏项目中的用处用法,浅谈游戏创作前的思路,如何策划好游戏玩法与操作,具体分析本游戏项目的设计思路与实现步骤,并在结尾对整个游戏进行测试和总结。此游戏是一个台风预防科普游戏的设计制作,论文会详细介绍游戏的制作步骤,包括游戏中的所需的系统功能的设计和一系列相应脚本的编写。论文共六章,每个章节部分做以下安排: 第一部分:绪论,分为三个小节,第一个小节的内容是介绍本篇课题的背景
15、和意义,二、三小节则对本篇论文的主体内容和组织结构进行大致的介绍; 第二部分:列出了本游戏项目所使用到的各个软件以及开发工具,并对其简单介绍;第三部分:在游戏开发之前,对游戏的设计思路和设计过程,包括场景的分配,科普知识点的实现方式等;第四部分:游戏开发过程中,碰撞,动画,交互等各个功能的实现方法;第五部分:运行游戏并进行测试检查;第六部分:对本游戏项目的总结与思考。第二章 开发工具介绍2.1 Unity3d游戏开发引擎2.1.1 Unity3d引擎介绍Unity3d游戏开发引擎是美国公司开发的,建筑可视化和实时三维动画功能是其一大特点3,全球累计下载量超过了5亿次。该软件以可交互的图形化形式
16、作为开发环境,适应多种平台,如Windows、Android等等2,许多热门游戏如王者荣耀等都是使用Unity3d来开发制作的,目前最优秀的游戏开发引擎中,就有它的一席之地,同时,它也是公认的极具发展前景的游戏引擎。2.1.2 Unity3d常用函数常用的脚本事件函数:表2.1 常用的脚本事件函数函数作用Awake()当前脚本被装载时调用。普遍在初始化整个实例时使用4Start()作为开始事件函数。在首次执行Update()函数前调用,在Awake()函数后调用,只调用一次Update()每帧都会执行一次5FixedUpdate()每一个固定帧绘制的时候时会执行一次,属于渲染帧执行6Ondes
17、troy()当游戏对象被销毁时执行一次OnEnable()在Start()函数后执行7,但需要被激活才会执行鼠标事件函数:表2.2 鼠标事件函数OnMouseEnter()鼠标进入OnMouseExit()鼠标离开OnMouseDown()鼠标按下(单击)Input类15:表2.3 Input类Input.GetKeyDown(KeyCode)键盘按下某个键Input.GetKey (KeyCode)键盘按下某个键按住不放Input.GetKeyUp(KeyCode)键盘按某个键松开Input.GetMouseButton()鼠标按住Input.GetMouseButtonDown()鼠标按下
18、Input.GetMouseButtonUp()鼠标键松开其中Input类的鼠标事件括号中可取数字0,1,2.0代表鼠标左键,1代表鼠标右键,2代表鼠标中间键。2.2 3dsMax 2014软件介绍 3dsMax是Discreet公司(后来被Autodesk公司兼并)开发的软件。主要用于渲染和制作三维动画8。建模功能强大,对于制作模型具备极大的弹性空间。 在本游戏当中,会使用到3dsMax软件制作以及修改游戏中所需模型,但大部分的模型会采用网络商店中已建好的现有模型,主要会使用到该软件对部分模型进行调整,以及解决一些格式问题。2.3 GoldWave软件介绍GoldWave是一个容易上手且功能
19、多样的数字音乐编辑软件9,同时它也能够给音频文件转换格式。软件的体积不大,但可以支持WAV、MP3、AVI、MOV等许多格式的音频文件。在处理方面,从像混响、降噪之类的一般特效到高级的公式计算来得到想要的声音,都可以满足需求。除此之外,操作简便,用户界面直观也是它的优点之一。本游戏项目会使用GoldWave软件对游戏中的合成语音、音效等音频进行处理,比如降噪,添加静音轨道等,使得游戏中的配音,音效更为切合,声音系统更为完整。2.4 Adobe Photoshop CS6 软件介绍Adobe Photoshop CS6是美国一家跨国电脑软件公司在2012年发行的一个图像处理软件10,可用于处理由
20、像素所构成的数字图像,也可用于图形创作。本游戏当中,所有的2D素材都是用此软件绘制创作或编辑的。第三章 游戏设计3.1 游戏说明 3.1.1 游戏简介主人公生活在M市,收看天气预报的时候,得知强台风“云霄”的动向离M市越来越近,预计在两天后登陆M市。在此情况下,需要玩家在场景中自由探索,帮助其做好预防准备。3.1.2 游戏操作说明游戏人物移动:人物移动一般有三种方式:第一种:“w”,“s”控制人物前进与后退,“a”,“d”控制人物的转向。第二种:视角固定,“w”,“s”,“a”,“d”分别控制人物上下左右移动。第三种:鼠标移动控制视角,键盘控制前进与后退。考虑到第一种方式视角有限,可能会对探索
21、产生不必要的障碍,第三种方式又容易产生3D眩晕感,因此,本游戏项目采用第二种人物移动方式。除了人物移动之外,游戏中还会使用到鼠标左键,空格键以及回车键。在游戏开始界面,设有两个按钮,一个是“开始游戏”按钮,一个是“游戏说明”按钮,都使用鼠标左键点击,在说明界面设有关闭按钮,鼠标左键点击该按钮会关闭说明界面,返回到开始界面中,鼠标单击开始界面进入游戏。在购买食材界面,玩家也需要使用鼠标左键单击来实现食材的选择。在游戏主场景中,使用空格键来与物体进行交互,需要使用到回车按键的部分,在游戏中也会有相应的提示。3.2 场景设计在游戏项目中,一共包括5个场景。第一个场景命名为beginScene,作为游
22、戏的开始界面,搭建好游戏背景模型后,使用摄像头制作一段开场拉近距离的动画,由远而近,到达位置后出现游戏标题,开始游戏按钮和操作说明按钮,按下说明按钮出现说明界面,按下开始则进入第二个场景。第二个场景是本游戏的主场景之一,命名为Scene1,是一个室内场景,在此场景中,可交互内容有窗户,电视机,手电筒以及存放药品的柜子,玩家在走到可交互物品附近时会有感叹号提示,此时按下空格键就会触发相应的动画以及科普内容。其中窗户会关闭,手电筒会发出亮光,电视机出现天气预报,存放药品的柜子会被拉开。不要求玩家每个物品都要触发到,但在离开场景的时候会做一个评分界面,针对玩家的探索进度进行打分,再进入第三个场景。第
23、三个场景也是本游戏的主场景之一,命名为Scene2,是一个户外场景,在此场景中,可交互内容有烧烤架,晾衣架以及盆栽,烧烤架和晾衣架都是空格键触发动画和科普,盆栽则需要玩家使用空格键将其一个一个搬运到指定地点。当所有物品都交互完毕后,楼梯位置会出现箭头指示,玩家走到箭头位置进入第四个场景。第四个场景也是游戏的主场景之一,命名为Scene3,是一个超市场景,玩家根据提示,走到指定的商品柜前,会进入一个挑选食材的小游戏界面,根据需要的食物选择正确的食材后,会返回到超市当中,此时地板会出现指示箭头,玩家走到箭头位置进入第五个场景。第五个场景作为游戏的总结场景,将游戏中所科普的知识点做一个总结。3.3
24、科普内容收集台风预防各类知识,选择出适用于一般家中的预防措施,如下:1.时刻关注电视或收音机,密切关注台风最新动态,了解台风实时路径。2.检查窗户是否紧闭,是否有裂痕或其他损坏,应及时处理维修。3.备好常用药品在家里,以备不时之需,比如感冒药,皮肤病常用药等。如果家人有高血压、心脏病等疾病,更应备好药品做足准备,以防万一。4.由于台风可能会造成停电,应该准备好手电筒等用具。5.检查户外是否有花草盆栽,挂饰装饰物,大型家具或电器等,应该及时收进屋内,防止被吹落,对楼下的行人或者房屋的玻璃造成危害。6.家中要囤够粮食,台风来临时不宜出门,要保证在家的食物充足。对所科普的内容知识进行一个简单的归类划
25、分,将科普内容分成室内场景,室外场景和购买食物环节。3.4 物体交互设计 将上一节科普内容中总结的六个知识点,分别对应各个交互物体。3.4.1 室内场景1. 检查窗户:窗户模型。当玩家移动到窗户附近时,会出现感叹号提示玩家附近有可交互物体。玩家按下空格键,摄像机会移动到画面以家中窗户为中心的位置,同时,播放关闭窗户的动画,并出现文字进行相应科普。2. 关注台风动态:电视机模型。当玩家移动到电视机附近时,会出现感叹号提示玩家附近有可交互物体。玩家按下空格键,摄像机会移动到画面以电视机为中心的位置,同时,电视机画面由全黑关机状态转为天气预报界面,并出现文字进行相应科普。图3.4.1 天气预报3.备
26、好常用药品:抽屉模型以及药品模型。当玩家移动到某个抽屉附近时,会出现感叹号提示玩家附近有可交互物体。玩家按下空格键,摄像机会移动到画面以该抽屉为中心的位置,同时,抽屉被打开,展现出里面的药品,并出现文字进行相应科普。图3.4.2 备好药品4.预防停电断电:手电筒模型。当玩家移动到放置手电筒的柜子附近时,会出现感叹号提示玩家附近有可交互物体。玩家按下空格键,摄像机会移动到画面以该柜子为中心的位置,同时,手电筒会上升并发出光亮(即手电筒为打开状态),且出现文字进行相应科普。3.4.2 户外场景1.花草盆栽模型。游戏的天台户外场景会放置三个盆栽,在盆栽均未被收起的前提下,玩家触碰到任意盆栽,会出现文
27、字科普内容,同时提示玩家按下空格键可以拿起盆栽,拿起后移动到光圈位置按下空格键可以将盆栽收进屋里。当玩家已经拿起一个盆栽以后,文字科普内容将不会再出现,同时除了盆栽,其他物品会变为不可交互状态,直至玩家将三个盆栽放置好。2.烧烤架模型。天台中的烧烤架也代表户外场景中的大型家具或电器,也需要收进屋中,否则万一被吹落,将造成不可估量的危害。当玩家触碰到烧烤架时,摄像机会移动到画面以该烧烤架为中心的位置,同时,烧烤架的盖子会被合上,并出现文字科普内容,内容中会提示按下空格键,此时玩家按下空格键,视角会返回原来的位置,且烧烤架也会被移动到楼梯口位置并消失。3.晾衣架模型。天台中会放置两个不同款式的晾衣
28、架,当玩家触碰到其中任意一个晾衣架时,会出现相应科普内容,且两个晾衣架会同时消失。3.4.3 购买食材场景玩家被告知家中粮食所剩无几,需要出门购买,储备食物,于是来到超市,此场景会放置许多货架。其中一个货架上方会有箭头提示。当玩家碰到箭头提示的货架时,会进入选择食材小游戏界面。界面中有13种食材的2D素材,文字框会依次出现“排骨焖饭”,“鸡蛋面”,“土豆饼”三种食物的文字,玩家需要点击对应的食材来完成购买,若点击正确食材会移动到文字框中,若点击错误食材上会显示一个错误图标,当玩家所有选项都正确时进入下一种食物的选择,当三种食物都选择完毕后,按空格键可以返回到超市场景中。第四章 游戏实现4.1
29、UI界面场景1为游戏开始的UI界面,界面包括开始游戏按钮,游戏说明按钮和说明界面的关闭按钮。4.1.1 界面功能开始游戏界面:开始按钮:鼠标点击该按钮后,进入场景2,正式开始游戏。说明按钮:鼠标点击该按钮后出现说明界面。说明界面的关闭按钮:鼠标点击该按钮后关闭说明界面。图4.1.1 游戏开始界面图4.1.2 游戏说明界面评分界面:评分界面是在玩家对室内场景探索完毕之后出现的一个界面,它会针对玩家的探索程度给予星星的评分,玩家在阅读完毕后按下回车键就会进入下一个场景。图4.1.3 评分界面这个界面会检测玩家在室内场景中,各个交互物体的探索情况,返回到自身,在上面的星型凹槽栏目播放对应的星星动画,
30、并配有声音,没有探索到的物体也会获取到,并呈现一个红叉的图标来显示。4.1.2 界面制作开始界面制作因为在界面出现之前设计了一段开场动画,所以先将场景1的模型搭建好,调整摄像机的初始位置,为摄像机建立一段动画,效果是制造一个由远到近的视角。下一步建立一个UI-Panel,命名为“Panel1”,里面添加一张Image和两个Button,将标题素材拉到Image中,调好位置,两个Button的Transition都选择Sprite Swap,再将准备好的按钮图片素材拉进HighLighted Sprite,Pressed Sprite,Disabled Sprite中,就可以达到我们想要的效果:
31、鼠标移到按钮上,移开按钮,按下按钮时都有颜色变化。为了实现在摄像机移动到指定位置之后(即场景1的摄像机动画播放完成之后),再显示UI界面,所以我们把Panel1取消勾选,再给动画的最后一帧添加一个脚本,使得当动画播放完之后执行Panel1显示的命令。1. publicclasscallPanel:MonoBehaviour2. publicGameObjectpanelbegin;3. voidcallPanelGo()4. 5. panelbegin.SetActive(true);6. 7. 接着建立UI-Panel2,用作说明界面,添加一个Button,设置与上面相同,作为关闭按钮,同样
32、Panel2先取消勾选。然后给这3个按钮添加点击事件,先写好一个脚本,内容是按下开始按钮后跳转到场景2,按下说明按钮后关闭Panel1,显示Panel2以及按下关闭按钮后关闭Panel2显示Panel1的三个方法。将脚本挂在EventSystem上,然后在Button中添加OnClick事件,把EventSystem拉进去。再调用对应的方法,就可以完成按钮的点击事件了。1. usingUnityEngine;2. usingUnityEngine.SceneManagement;3. publicclassbeginSceneButton:MonoBehaviour4. publicGameO
33、bjectpanel01;5. publicGameObjectpanel03;6. publicvoidbeginSceneButtonControl()7. 8. SceneManager.LoadScene(1);9. 10. publicvoidgameShuoMing()11. 12. panel01.SetActive(false);13. panel03.SetActive(true);14. 15. publicvoidOffgameShuoMing()16. 17. panel03.SetActive(false);18. panel01.SetActive(true);19
34、. 20. 评分界面制作建立一个UI-Panel,命名为Panel8,为Panel8添加8个Image,5个Text,其中四个Image全部放入星星图片,位置拉到摄像机视线以外,并为他们添加四个动画,分别是一颗星的,两颗星的,以此类推,制作出星星们一个一个飞进四个星星框位置的效果。另外四个Image和五个Text则先写好内容和拉好位置。图4.1.4 评分为4星的动画设置好布尔值之后为Panel8添加脚本,以下仅为部分脚本:1. voidStart()2. windowNumber=GameObject.Find(TishWindow)3. .gameObject.GetComponent().
35、windowNumber;4. sum=windowNumber+TVNumber+flashLightNumber+drugNumber;5. if(windowNumber=1)6. imageWindow.sprite=Resources.Load(_Texture/star,7. typeof(Sprite)asSprite;8. elseif(windowNumber=0)9. imageWindow.sprite=Resources.Load(_Texture/ohno,10. typeof(Sprite)asSprite;11. if(sum=1)12. anim.SetBool
36、(one,true);13. this.GetComponent().clip=audios1;14. this.GetComponent().Play();15. voidUpdate()16. if(Input.GetKeyDown(KeyCode.Return)17. 18. SceneManager.LoadScene(2);19. 20. 这里使用windowNumber去获取窗户物体上的数值,如果为1,证明玩家已探索过,Image图片换为星星图案,如果为0,证明玩家未探索过,Image图片换为红叉图案,剩下的三个交互物体同理。脚本中还定义了一个int类型的变量sum,它的值等于四个
37、物体上的参数相加,如果为0,则表示一个都没探索,评分不会给予星星,如果为4,则表示四个探索均完成,播放四星动画。4.2 场景搭建游戏主场景一共有三个,分别是室内场景,户外场景和超市场景。先导入相关模型,再将它们拉到场景中,调整好模型大小比例以及所在位置,将人物模型拉进并移动到初始位置,再给摄像机固定一个视角。图4.2.1 室内场景图4.2.2 户外场景图4.2.3 超市场景4.3 动画系统 游戏中我添加了许多动画,这里分各个场景来进行描述。场景1:摄像机的位移动画。选中摄像机,再选择工具栏中Window-Animation=Animation(或直接按ctrl+6),为摄像机添加一个动画并命名
38、,再添加时间节点,点击录制按钮,调整好各个时间当中摄像机的位置,取消勾选Loop选项,就实现了简单的位移动画。室内场景:摄像机位移动画;窗户关闭动画;电视机开启效果;手电筒上升并发光动画;抽屉拉开出现药品动画。摄像机做了四个位移动画,分别是移动到画面以窗户为中心的位置,以电视机为中心的位置,以手电筒为中心的位置,以抽屉为中心的位置。做法同场景1的摄像机动画做法一致,不同的是需要调整终点位置,以及初始需要添加一个摄像机的Idle动画,这个Idle动画中什么都不做,使摄像机一直保持静止状态。然后给每一个动画添加一个布尔值,我分别命名为“CamWindow”,“CamTV”,“CamFlashlig
39、ht”和“CamDrug”,默认状态下为不勾选,再给他们与Idle动画的通道添加布尔值判断事件,动画状态机控制如下:图4.3.1 摄像机动画控制做好这些之后,再给摄像机写一个脚本如下:1. usingUnityEngine;2. usingUnityEngine.UI;3. publicclasscameraAnimatorTest:MonoBehaviour4. publicGameObjectpanel03;5. publicAnimatoranimWindow01;6. publicAnimatoranimWindow02;7. publicGameObjectpanel05;8. pu
40、blicGameObjectTV;9. privateVector3tvPos=newVector3(-17.41f,2.37f,-25.81f);10. publicGameObjectpanel06;11. publicAnimatoranimFlashlight;12. publicGameObjectpanel07;13. publicAnimatoranimDrugLight;14. publicAnimatoranimDrawer;15. publicvoidtoWindow()16. 17. panel03.SetActive(true);18. animWindow01.Set
41、Bool(window,true);19. animWindow02.SetBool(window,true);20. 21. publicvoidtoTV()22. 23. panel05.SetActive(true);24. Instantiate(TV,tvPos,Quaternion.identity);25. 26. publicvoidtoFlashlight()27. 28. panel06.SetActive(true);29. animFlashlight.SetBool(lightOn,true);30. 31. publicvoidtoDrug()32. 33. pan
42、el07.SetActive(true);34. animDrugLight.SetBool(DrugLightOn,true);35. animDrawer.SetBool(DrawerOpen,true);36. 37. 这个脚本只是用于摄像机在播放完某一段动画后执行对应的方法,而调用摄像机播放动画的脚本会放在碰撞系统介绍。接下来制作窗户关闭动画,先选中窗户物体中的玻璃片物体,再选择工具栏中Window-Animation=Animation(或直接按ctrl+6),点击添加玻璃片的Position,再点击录制,在末位置将玻璃拉到合适的位置,即可完成。动画做完后取消勾选Loop选项,添加一
43、个布尔值命名为“window”,在以上脚本的toWindow方法中,修改布尔值为true,也就是当摄像机移动到窗户为中心的画面之后,窗户就会播放关闭的动画。制作电视机开启效果,只运用到了摄像机的位移动画,但需要显示出天气预报的界面,所以先制作一个预制体,将天气预报的图片拉进场景中,再调整好位置并记住位置参数(防止实例化时位置出现错误),需要贴合电视机的屏幕并填充满屏,然后再将这个物体拉到我们创建好的预置物文件夹中,接着就可以删掉场景中的这个预制体。在以上脚本的toTV方法中我们可以看到,当摄像机移动到以电视机为中心的画面之后,就会实例化这个预制体到一个具体的位置参数中,所以天气预报的图片就会出
44、现在电视机前。制作抽屉拉开动画,先提前将药品模型放置在抽屉里面,同时将药品模型作为抽屉的子物体,选中抽屉,再选择工具栏中Window-Animation=Animation(或直接按ctrl+6),添加一个DrawerOpen的动画,使之达到拉开的效果,由于抽屉在角落中光线不足,所以我在抽屉附近摆了一盏立式台灯,为这个台灯做了一个开灯的动画,我给台灯添加了一个Point Light,然后在台灯的Animation中添加Point Light的color,从(r:0,b:0,g:0,a:1)到(r:2,b:2,g:2,a:2),就可以实现开灯的效果,同时两个动画都取消勾选Loop选项。在以上脚本中的toDrug方法里面,会执行修改布尔值为true的命令,也就是当摄像机移动到抽屉为中心的画面之后,抽屉就会打开并且旁边的立式台灯也会开灯照明。制作手电筒动画,先给手电筒模型添加一个Point Light,把Point Light的位置调到手电筒前面部分的玻璃片位置,也就是它的发光位置。选中手电筒模型,再选择工具栏中Window-Animation=Animation(或直接按ctrl+6),创建一个手电筒动画文件,添加Position,Rotation和Point Light的color,设置好位置参