您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > unity课程设计报告(刘卉和沈玉婷)
江南大学数字媒体技术专业2012--2013年度第1学期1课程:Unity3D课程设计题目:小球吃宝石班级:数媒0902学号:0305090205/0305090206姓名:刘卉/沈玉婷日期:2012.12江南大学数字媒体技术专业2012--2013年度第1学期2一、摘要网络游戏是一种新型的IT产业。我们研究主要内容是网络软件设计方法,网络游戏:英文名称为OnlineGame,又称“在线游戏”,简称“网游”。指以互联网为传输媒介,以游戏运营商服务器和用户计算机为处理终端,以游戏客户端软件为信息交互窗口的旨在实现娱乐、休闲、交流和取得虚拟成就的具有可持续性的个体性多人在线游戏。本报告主要讲述了这个小游戏的设计思路及初步使用Unity3D软件的感受和总结。设计过程中,首先建立自己想要的模型,然后在此基础上进行需求迭代,详细设计时不断地修正和完善,经过测试阶段反复调试和验证,最终形成达到设计要求的小游戏。基于视频教程“平衡球”的基础,构建了一个益智游戏风格的游戏,并有主角(小球)与关卡(一关)、游戏逻辑(触碰宝石)、游戏环境界面(环形轨道)等设计,使得玩家可以在场景轨道中进行小球吃宝石的冒险游戏。本游戏的控制很简单,及用键盘的上下左右(或WSAD)四个箭头控制小球的上下左右四个方向,用户根据自己的战略方式选择小球能吃到宝石的最佳捷径,从而一步步吃掉所有宝石。分工:刘卉——场景的构建和小球、宝石等道具的设计;沈玉婷——游戏内容的构思设计和程序代码的编写。关键词:网络游戏、小球吃宝石、浏览器形式。江南大学数字媒体技术专业2012--2013年度第1学期3二、概述《网络游戏程序设计》这一课程以大作业形式进行考核,能更好地锻炼学生综合运用本课程所授知识的能力。大作业主要内容为设计完成面向某一主题内容的游戏演示程序。自选游戏主题,并根据所选定的主题内容设计一个典型的游戏场景及玩家逻辑,其中包含主角与关卡,游戏逻辑,游戏环境界面与交互过程等的设计;开发完成与设计相符的游戏Demo。要求使用Unity3D游戏开发软件实现上述游戏Demo。三、具体要求1、每人单独完成,特殊可由2人合作完成。2、游戏主题自拟。3、根据所设游戏主题、场景及玩家逻辑,实现完成相应的游戏Demo,并撰写设计开发报告。四、网络游戏介绍网络游戏是一种新型的IT产业。我们研究主要内容是网络软件设计方法,网络游戏:英文名称为OnlineGame,又称“在线游戏”,简称“网游”。指以互联网为传输媒介,以游戏运营商服务器和用户计算机为处理终端,以游戏客户端软件为信息交互窗口的旨在实现娱乐、休闲、交流和取得虚拟成就的具有可持续性的个体性多人在线游戏。网络游戏目前的使用形式可以分为以下二种:(1)浏览器形式基于浏览器的游戏,也就是我们通常说到的网页游戏,又称为WEB江南大学数字媒体技术专业2012--2013年度第1学期4GAME,它不用下载客户端,任何地方任何时间任何一台能上网的电脑快乐的游戏,尤其适合上班族,其类型及题材也非常丰富。(2)客户端形式这一种类型是由公司所架设的服务器来提供游戏,而玩家们则是由公司所提供的客户端来连上公司服务器以进行游戏,而现在称之为网络游戏的大都属于此类型。此类游戏的特征是大多数玩家都会有一个专属于自己的角色(虚拟身份),而一切角色资料以及游戏资讯均记录在服务端。就目前网络游戏主要的游戏模式而言,主要有以下几种:动作游戏、冒险游戏、益智游戏、卡片游戏、战略游戏等等。本课程设计所设计的游戏类型是小球吃宝石游戏,属于益智游戏的一种。五、设计主题基于视频教程“平衡球”的基础,构建了一个益智游戏风格的游戏,并有主角(小球)与关卡(一关)、游戏逻辑(触碰宝石)、游戏环境界面(环形轨道)等设计,使得玩家可以在场景轨道中进行小球吃宝石的冒险游戏。六、设计思路本游戏以几个环环相扣的轨道作为小球运动的轨迹,在轨道上分别设计一些红宝石,通过电脑上的上下左右箭头(或WSAD)分别控制小球的运动方向(上下左右),稍有偏差小球就会离开平面,游戏结束;相反,如果小球运动位置没有偏离所设计轨道平面而且碰触到红宝石,即算初步成功,当小球全部吃掉所设计的红宝石,游戏胜利。江南大学数字媒体技术专业2012--2013年度第1学期5本报告主要讲述了这个小游戏的设计思路及初步使用Unity3D软件的感受和总结。设计过程中,首先建立自己想要的模型,然后在此基础上进行需求迭代,详细设计时不断地修正和完善,经过测试阶段反复调试和验证,最终形成达到设计要求的小游戏。分工:刘卉——场景的构建和小球、宝石等道具的设计;沈玉婷——游戏内容的构思设计和程序代码的编写。七、具体构建步骤1、天空盒子添加2、用BSP笔刷建造场景的基本结构。3、为场景贴图。贴图时,根据道具的风格,选择泥土或砖块的BSP贴图,每次贴图选择一个平面的一个面,复制粘贴直至完全贴完。江南大学数字媒体技术专业2012--2013年度第1学期64、放置静态模型和道具。本场景设定为环形轨道上小球的运动,选用小球和宝石做道具。5、场景灯光。添加相应的点光源,查看效果。江南大学数字媒体技术专业2012--2013年度第1学期76、摄像机。调整摄像机到合适的位置八、程序脚本1、游戏结束触发器程序(GameoverTrigger):usingUnityEngine;usingSystem.Collections;publicclassGameoverTrigger:MonoBehaviour{voidOnTriggerEnter(){MarbleGameManager.SP.SetGameOver();}}2、小球的控制程序(MarbleControl):usingUnityEngine;usingSystem.Collections;publicclassMarbleControl:MonoBehaviour{publicfloatmovementSpeed=6.0f;voidUpdate(){Vector3movement=(Input.GetAxis(Horizontal)*-Vector3.left*movementSpeed)+(Input.GetAxis(Vertical)*Vector3.forward*movementSpeed);rigidbody.AddForce(movement,ForceMode.Force);}voidOnTriggerEnter(Colliderother){if(other.tag==Pickup)江南大学数字媒体技术专业2012--2013年度第1学期8{MarbleGameManager.SP.FoundGem();Destroy(other.gameObject);}else{//Othercollider..Seeother.tagandother.name}}}3、小球游戏运作情形设计程序(MarbleGameManager):usingUnityEngine;usingSystem.Collections;publicenumMarbleGameState{playing,won,lost};publicclassMarbleGameManager:MonoBehaviour{publicstaticMarbleGameManagerSP;privateinttotalGems;privateintfoundGems;privateMarbleGameStategameState;voidAwake(){SP=this;foundGems=0;gameState=MarbleGameState.playing;totalGems=GameObject.FindGameObjectsWithTag(Pickup).Length;Time.timeScale=1.0f;}voidOnGUI(){GUILayout.Label(Foundgems:+foundGems+/+totalGems);if(gameState==MarbleGameState.lost){GUILayout.Label(YouLost!);if(GUILayout.Button(Tryagain)){Application.LoadLevel(Application.loadedLevel);江南大学数字媒体技术专业2012--2013年度第1学期9}}elseif(gameState==MarbleGameState.won){GUILayout.Label(Youwon!);if(GUILayout.Button(Playagain)){Application.LoadLevel(Application.loadedLevel);}}}publicvoidFoundGem(){foundGems++;if(foundGems=totalGems){WonGame();}}publicvoidWonGame(){Time.timeScale=0.0f;//PausegamegameState=MarbleGameState.won;}publicvoidSetGameOver(){Time.timeScale=0.0f;//PausegamegameState=MarbleGameState.lost;}}4、跟踪小球球的摄像机设置(MarbleCamera):usingUnityEngine;usingSystem.Collections;publicclassMarbleCamera:MonoBehaviour{publicTransformtarget;publicfloatrelativeHeigth=10.0f;publicfloatzDistance=5.0f;publicfloatdampSpeed=2;江南大学数字媒体技术专业2012--2013年度第1学期10voidUpdate(){Vector3newPos=target.position+newVector3(0,relativeHeigth,-zDistance);transform.position=Vector3.Lerp(transform.position,newPos,Time.deltaTime*dampSpeed);}}八、关于服务器及网络模块的设计及实现网络模块的设计主要为了实现网络版的服务端与客户端之间的连接以及它们之间数据的传送。图展示了网络模块的结构图,网络模块主要由客户机服务器两部分组成。在使用TCP协议时,一般服务端进程先使用socket调用得到一个描述符,然后使用bind调用将一个名字与socket描述符连接起来,对于Internet域就是将Internet地址联编到socket。之后,服务端使用listen调用指出等待服务请求队列的长度。然后就可以使用accept调用等待客户端发起连接,一般是阻塞等待连接,一旦有客户端发出连接,accept返回客户的地址信息,并返回一个新的socket描述符,该描述符与原先的socket有相同的特性,这时服务端就可以使用这个网络模块客户机服务器江南大学数字媒体技术专业2012--2013年度第1学期11新的socket进行读写操作了。一般服务端可能在accept返回后创建一个新的进程进行与客户的通信,父进程则再到accept调用处等待另一个连接。客户端进程一般先使用socket调用得到一个socket描述符,然后使用connect向指定的服务器上的指定端口发起连接,一旦连接成功返回,就说明已经建立了与服务器的连接,这时就可以通过socket描述符进行读写操作了。一旦创建Socket,在客户端,你将可以通过Connect方法连接到指定的服务器(你可以在Connect方法前Bind端口,就是以指定的端口发起连接,如果不事先Bind端口号的话,系统会默认在1024到5000随机绑定一个端口号),并通过Send方法向远程服务器发送数据,而后可以通过Receive从服务端接收
本文标题:unity课程设计报告(刘卉和沈玉婷)
链接地址:https://www.777doc.com/doc-6141452 .html