第一人称射击类系统设计项目书_第1页
第一人称射击类系统设计项目书_第2页
第一人称射击类系统设计项目书_第3页
第一人称射击类系统设计项目书_第4页
第一人称射击类系统设计项目书_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、项目说明设计题目古堡行动设计技术参数系统平台:Android 4.0.3以上(Windows 7)开发工具:Unity、MonoDevelop(Visual Studio 2013)开发语言:C#插件:无设计要求1. 游戏的登录注册,开始界面,以及游戏界面的UI设计2. 游戏地图,主角,敌人等的设计3. 界面简洁,大气,操作流程清晰,无过多错误4. 代码逻辑或思路清晰,有大部分全面的注释工作量课程设计报告2755字源程序大概 4500 行工作计划2018.04.15-04.28 根据课程设计的要求,进行需求分析,查找相关资料;2019-05.10 进行项目概要设计和整理素材;2018.05.1

2、1-06.18 详细设计和具体项目实现;2018.06.19-06.22 对游戏进行调试分析,撰写课程设计报告。参考资料1金玺曾.Unity3D手机游戏开发.北京:清华大学出版社,2013目录1 需求分析12 概要设计12.1 设计思路12.2 存储结构设计12.3 功能模块设计23 详细设计33.1 游戏工程视图33.2 游戏界面布局43.3 功能模块设计实现53.4 其他设计实现113.4.1 摄像机的跟随113.4.2 游戏音效的添加123.4.3 游戏开始界面的设计124 运行与测试145 总结16小组成员分工表161 需求分析1.1技术需求此游戏是在Unity2018上开发出来的,U

3、nity2018可以支持2D、3D场景的编辑,本游戏是基于3D场景开发的。游戏中的脚本语言使用的是C#,Unity2018中的microsoft visual 2017为脚本编辑提供了平台。1.2功能需求1.2.1古堡行动游戏玩法介绍:玩家通过注册登录帐号进入游戏,游戏中设有三个敌人出生点,并且会自动寻路并攻击玩家,玩家通过持枪射击对抗敌人,每击杀一个敌人玩家为加一分,玩家有血条,地图会随机生成血包,供玩家增加血量,当玩家血量值为0时,游戏失败;当玩家击杀敌人个数达到200个后,游戏即为胜1.2.2古堡行动游戏制作功能的需求:登录注册、玩家和敌人AI、游戏特效(子弹设计特效,敌人死亡特效)、敌

4、人生成、敌人自动寻路、碰撞检测、UI界面设计.2 概要设计2.1 设计思路我们选择第一人称射击游戏的设计来源来自经典的cf游戏,但由于能力和时间原因,我们做出来的很简单。设计思路是要保证游戏拥有最基本的第一人称射击游戏的功能。2.2 存储结构设计游戏中出现的所有类: 例如:Player类:玩家类Enemy类:敌人类AppearEnemy类:敌人出生点AddBlood类:血包Bullet类:子弹ShootAudio类:射击音效GameManager类:游戏状态设计Xml文档 2.3 功能模块设计游戏具有六大功能模块,分别为:游戏开始模块(1) 战斗模块(2) 生存模块(3) 场景切换模块:包括场

5、景触发器的设计;(4) 分数统计模块:包括对玩家分数的显示;(5) 游戏结束模块:包括游戏结束菜单的设计;其功能模块图如图2-1所示:古堡行动游戏战斗模块生存模块场景切换模块分数统计模块游戏结束模块游戏开始模块图2-1功能模块图3 详细设计3.1 游戏工程视图“Audios”文件夹如图3-1所示:图3-1 “Audios”文件夹“Textures”文件夹如图3-2所示:图3-2 “Textures”文件夹然后我们需要新建“Materials”:材质文件夹;“Prefabs”:预制文件夹;“Scenes”:游戏场景文件夹;“Scripts”:脚本文件夹。总体工程视图如图3-3所示:图3-3 总体

6、工程视图3.2 游戏界面布局3.2.1.开始界面图3-4 开始界面3.2.2.结束界面图3-5 结束界面3.3 功能模块设计实现3.3.1游戏开始设计voidStart()_zc.gameObject.SetActive(false);_xmlPatch=Application.dataPath+/user.xml;if(!File.Exists(_xmlPatch)XmlDocumentxmlDoc=newXmlDocument();XmlElementroot=xmlDoc.CreateElement(Root);xmlDoc.AppendChild(root);XmlElementuse

7、r=xmlDoc.CreateElement(User);user.SetAttribute(user_name,Admin);user.SetAttribute(user_password,123);user.SetAttribute(qq,123456);root.AppendChild(user);xmlDoc.Save(_xmlPatch);Debug.Log(xmlcreatsuccess!);/Updateiscalledonceperframepublicvoidjingruyouxi()if(zhanghaoinput.text=|mimainput.text=)tishixx

8、.text=密码或用户名为空,请重新输入!;zhanghaoinput.text=;mimainput.text=;return;Debug.Log(zhanghaoinput.text);Debug.Log(mimainput.text);XmlDocumentxmlDoc=newXmlDocument();xmlDoc.Load(_xmlPatch);XmlNodeListnodelist=xmlDoc.SelectSingleNode(Root).ChildNodes;foreach(XmlElementxeinnodelist)Debug.Log(xe.GetAttribute(use

9、r_name);if(xe.GetAttribute(user_name)=zhanghaoinput.text)if(xe.GetAttribute(user_password)=mimainput.text)tishixx.text=登录成功!;SceneManager.LoadScene(4);elsetishixx.text=密码输入有误!;elsetishixx.text=用户未注册,请注册!;publicvoidzc()if(zcyonghuinput.text=|zcmimainput1.text=|zcmimainput2.text=)tsxx.text=信息不完整!;retu

10、rn;if(zcmimainput1.text!=zcmimainput2.text)tsxx.text=两次密码输入不一致!;return;XmlDocumentxmlDoc=newXmlDocument();xmlDoc.Load(_xmlPatch);XmlNodeListnodelist=xmlDoc.SelectSingleNode(Root).ChildNodes;foreach(XmlElementxeinnodelist)if(xe.GetAttribute(user_name)=zcyonghuinput.text)tsxx.text=用户名已经被占用!;return;/取得

11、根节点XmlNoderoot=xmlDoc.SelectSingleNode(Root);/创建User新节点XmlElementuser=xmlDoc.CreateElement(User);/XmlElementuser1=xmlDoc.CreateElement(User_lov);/XmlTextlov=xmlDoc.CreateTextNode(158);/user1.AppendChild(lov);/设置属性user.SetAttribute(user_name,zcyonghuinput.text);user.SetAttribute(user_password,zcmimai

12、nput1.text);/将新节点加入根节点root.AppendChild(user);/root.AppendChild(user1);/保存文件xmlDoc.Save(_xmlPatch);tsxx.text=(恭喜!注册成功!);zcyonghuinput.text=;zcmimainput1.text=;zcmimainput2.text=;close_zc(); 3.3.2战斗模块设计voidUpdate()/生成一道射线Rayray=Camera.main.ScreenPointToRay(Input.mousePosition);/射线碰撞RaycastHithit;/点击鼠标

13、左键if(Input.GetMouseButtonDown(0)&bullets0)/剩余子弹个数bullets-;/通过射线获得目标点/Returnsaraygoingfromcamerathroughascreenpoint./Rayray=Camera.main.ScreenPointToRay(Input.mousePosition);/Returnsapointatdistanceunitsalongtheray.Vector3target=ray.GetPoint(20);/修改发射起点的朝向/firePoint.transform.LookAt(target);/实例化子弹Rig

14、idbodyclone=(Rigidbody)Instantiate(bullet,firePoint.transform.position,tion);/初始化子弹的方向速度clone.velocity=(target-firePoint.transform.position)*3;/播放子弹音频Gun.SendMessage(shootAudio);/如果射线碰到物体的话19打开第九层if(Physics.Raycast(ray,outhit,100,19)/击中控制台反馈Debug.Log(hit.normal);/销毁碰撞器Destroy(hit.collider);/加分score+

15、;/Destroy(hit.transform.gameObject);hit.transform.gameObject.GetComponent().dead();/修改发射起点的朝向firePoint.transform.LookAt(Camera.main.ScreenPointToRay(Input.mousePosition).GetPoint(20);/胜利检测if(score=50)Debug.Log(Gamevictory!);Application.LoadLevel(Gamevictory);/死亡检测if(blood=0|bullets50)blood=100;elseb

16、lood+=50;/掉血publicvoidreduceBlood(intattackType)switch(attackType)case6:blood-=6;break;case8:blood-=8;break;case10:blood-=10;break;default:Debug.Log(blooderror);break;3.3.4场景切换模块设计publicclassStartGAME:MonoBehaviour/UsethisforinitializationvoidStart()/Updateiscalledonceperframepublicvoidsg()SceneMana

17、ger.LoadScene(0);publicvoidFh()SceneManager.LoadScene(START); 3.3.5分数统计模块设计if(Physics.Raycast(ray,outhit,100,1 0 & m_CharacterController.isGrounded)/速度向量长度大于0,在地面上 m_Camera.transform.localPosition = m_HeadBob.DoHeadBob(m_CharacterController.velocity.magnitude + (speed*(m_IsWalking ? 1f : m_RunstepLe

18、nghten); newCameraPosition = m_Camera.transform.localPosition; newCameraPosition.y = m_Camera.transform.localPosition.y - m_JumpBob.Offset(); else newCameraPosition = m_Camera.transform.localPosition; newCameraPosition.y = m_OriginalCameraPosition.y - m_JumpBob.Offset(); m_Camera.transform.localPosition = newCameraPosition; 3.4.2 游戏音效的添加publicclassShootAudio:MonoBehaviour/UsethisforinitializationvoidStart()/UpdateiscalledonceperframevoidUpdate()publicvoidshootAudio()AudioSourceaudio=GetComponent();audio.Play(); 3.4.3 游戏UI的设计publicclassRoleBulletController:MonoBehav

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论