2022年游戏程序设计报告 .pdf

上传人:H****o 文档编号:39714128 上传时间:2022-09-07 格式:PDF 页数:21 大小:2.05MB
返回 下载 相关 举报
2022年游戏程序设计报告 .pdf_第1页
第1页 / 共21页
2022年游戏程序设计报告 .pdf_第2页
第2页 / 共21页
点击查看更多>>
资源描述

《2022年游戏程序设计报告 .pdf》由会员分享,可在线阅读,更多相关《2022年游戏程序设计报告 .pdf(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、游戏程序设计课程报告报 告 题 目太 空 大 战 游 戏 程 序 设 计学 院 名 称信 息 科 学 与 技 术 学 院专 业 名 称软 件 工 程学 生 姓 名学 生 学 号任 课 教 师报 告 成 绩教务处 制2015 年 07 月 04 日名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 21 页 -目录第 1 章 引言.21.1 游戏设计背景.21.2 游戏规则.31.3 主要研究内容.5第 2 章 游戏开发工具和关键技术简介.52.1 开发工具.52.2 关键技术.5第 3 章 游戏程序总体设计.73.1 游戏总体流程:.73.2 游戏类图:.8第 4 章 游戏程序实现与

2、测试.104.1 敌人碰撞逻辑的实现:.104.2 终极 BOSS 的移动实现:.114.3 玩家移动逻辑实现.134.4 玩家碰撞逻辑实现:.144.5 游戏界面 GUI显示逻辑实现:.144.6 敌人生成逻辑实现:.18第五章收获.20第六章参考文献.20第 1 章 引言1.1 游戏设计背景本次设计游戏为一款飞行射击类游戏,名字为太空大战。该游戏具有普通游戏一样的功能,比如场景设计,纹理贴图,人物移动,碰撞检测,生命值等元素。和团队一起设计并实现该游戏一方面巩固课堂学到的知识,学以致用,加深理论知识的理解,另一方面也锻炼了自己的实际编码能力和团队协作的能力,是一次难得又宝贵的开发名师资料总

3、结-精品资料欢迎下载-名师精心整理-第 2 页,共 21 页 -经历。目前市面上的飞行射击游戏还算火爆,随着智能手机的普及,人们越来越多的使用手机玩手机游戏,其中以休闲类游戏为代表,比如成绩火爆过的愤怒的小鸟,flappy bird,雷电 3D,现代战争等游戏都广受好评。1.2 游戏规则本款太空大战游戏分为两种模式:挑战模式和生存模式。玩家可在游戏主界面进行选择,如下图:其中挑战模式分为4 个关卡,每个关卡的难度依次递增,玩家必须消灭一定数量的敌人,得到规定的分数才可以进入下一关。每一关的敌人会有所不同,难度也依次增加。最后一关为挑战终极BOSS,消灭 BOSS 后即可通关。下图分别为第二关和

4、终极BOSS:名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 21 页 -生存模式中没有关卡限制,以计分为主,随着玩家分数的增加,游戏难度会逐渐加大,以敌人数量增加和类型增多来表现,玩家每次得到一百分,自己生命值就会增加一,初始生命为10,玩家生命耗尽则游戏结束,如下图:名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 21 页 -1.3 主要研究内容在本次太空大战游戏设计中,我主要负责编码实现,精确碰撞技术的研究等内容。第 2 章 游戏开发工具和关键技术简介2.1 开发工具本次游戏开发语言使用C#采用 Unity3d 4.6游戏引擎开发代码编写使用 VS2012 模

5、型制作采用 3dMax2012 2.2 关键技术游戏中设计的关键技术主要有物体的精确碰撞检测,背景动画的循环播放。精确碰撞检测:物体的精确碰撞实现方法有很多,在这个游戏中使用的是制作模型来达到精确碰撞的目的。首先在3dMax中制作出敌人的模型和一个同模型相接近的骨骼,并依附在模型中一起打包成FBX格式的模型,然后在Unity3d 中直接导入该模型,就可以直接使用之前制作好的骨骼来做精确碰撞处理,如下图:名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 21 页 -背景动画的循环播放:实现背景的循环播放方法也很多,常见的比如直接使用2张可以前后对接的图片,当一张图片播放完成后直接在后

6、面接入另一张图片,重复此过程,即可达到动画循环的目的。在这个有些中,我直接使用的Unity3d 中的动画系统来制作 UV动画,如下图:名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 21 页 -第 3 章 游戏程序总体设计3.1 游戏总体流程:名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 21 页 -首先玩家进入游戏主界面,进行选择,点击退出则直接退出游戏。选择挑战模式则进入游戏,游戏失败可以选择继续或者返回主界面,选择生存模式则当声明值耗尽时显示玩家分数并显示回退按钮退回到主界面,选择游戏帮助,则进入帮助界面。3.2 游戏类图:(1)敌人类图:Enemy+m_p

7、oint:int+m_explosionFX:Transform+m_life:float+m_speed:float#m_rottSpeed:float#m_transform:Transform#mplayer:Player-Start():void-Update():void#UpdateMove():virtual void-OntriggerEnter(Collider other):voidSuperEnemy+m_rocket:Transform#m_fireTimer:float#m_player:Transform-Awake():void#UpdateMove():over

8、ride voidSuperHelicoptersApacheEnemy+m_rocket:Transform+m_fireTimer:float+m_player:Transform+Awake():void+UpdateMove():override voidSuperHelicopterEnemy+m_rocket:Transform+m_fireTimer:float+m_player:Transform+UpdateMove():override void+Awake():void游戏中有 4 种敌人,如上图所示,其中最原始的敌人是Enemy类,其它 3 中敌人都继承于 Enemy,

9、只是重写了移动方法和少量属性。(2)玩家类图:名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 21 页 -Player#m_targetPos:Vector3+m_inputMask:LayerMask+m_shootClip:AudioClip+m_audio:AudioSource+m_explosionFX:Transform+m_life:float+m_speed:float#m_transform:Transform+m_rocket:Transform-m_rockectRate:float-Start():void-MoveTo():void-Update():v

10、oid-OnTriggerEnter():void玩家类中有 MovwTo()方法,该方法实现玩家追随鼠标移动的方法,在手机上即让玩家追随手指移动。其中的OnTriggerEnter()方法检测碰撞并作出相应的逻辑计算。(3)子弹类:Rocket-m_speed:float-m_liveTime:float-power:float#m_transform:Transform-Start():void-Update():void-OnTriggerEnter():voidEnemyRocket-OnTriggerEnter():void子弹类分为玩家子弹和敌人子弹,其中敌人子弹继承于玩家子弹,重

11、新了碰撞检测逻辑,由于 Unity3d 可直接在面板中设置脚本属性的值,因此每种敌人的子弹类不需要再重新写一个类,只需要依附EnemyRocket脚本后再重新设置值即可。名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 21 页 -第4章 游戏程序实现与测试4.1 敌人碰撞逻辑的实现:void OnTriggerEnter(Collider other)if(other.tag.CompareTo(PlayerRocket)=0)/如果子弹发生碰撞 Rocket rocket=other.GetComponent();/获取子弹对象的引用 if(rocket!=null)m_lif

12、e-=rocket.power;/减少生命值 if(m_life=0)mplayer.m_life+=1;/增加生命 GlobalPramameters.lifeAddCount+=1;else GameManager.Instance.AddScore(m_point);/消灭敌人后增加分数名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 21 页 -Instantiate(m_explosionFX,m_transform.position,Quaternion.identity);/播放爆炸特效 Destroy(this.gameObject);if(other.tag.C

13、ompareTo(Player)=0&this.gameObject.tag.CompareTo(Model_Helicopters_Apache)!=0)m_life=0;Instantiate(m_explosionFX,m_transform.position,Quaternion.identity);/播放爆炸特效 Destroy(this.gameObject);if(other.tag.CompareTo(bound)=0)m_life=0;Instantiate(m_explosionFX,m_transform.position,Quaternion.identity);/播放

14、爆炸特效 Destroy(this.gameObject);4.2 终极 BOSS 的移动实现:protected override void UpdateMove()m_fireTimer-=Time.deltaTime;名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 21 页 -if(m_fireTimer=0)m_fireTimer=1;if(m_player!=null)Vector3 relativePos=m_transform.position-m_player.position;/敌机位置减去玩家位置,得到一个向量差 Vector3 leftPos1=m_tra

15、nsform.position;/左边发射导弹位置 Vector3 leftPos2=m_transform.position;/左边发射导弹位置 Vector3 rightPos1=m_transform.position;/右边发射导弹位置 Vector3 rightPos2=m_transform.position;/右边发射导弹位置 leftPos1.x-=0.9f;leftPos2.x-=1.3f;rightPos2.x+=0.9f;rightPos1.x+=1.2f;Instantiate(m_rocket,leftPos1,Quaternion.LookRotation(rela

16、tivePos);/让子弹朝着玩家飞 Instantiate(m_rocket,leftPos2,Quaternion.LookRotation(relativePos);/让子弹朝着玩家飞 Instantiate(m_rocket,rightPos2,Quaternion.LookRotation(relativePos);/让子弹朝着玩家飞 Instantiate(m_rocket,rightPos1,Quaternion.LookRotation(relativePos);/让子弹朝着玩家飞 /前进:Z 方向直线往下走 float rx=Mathf.Sin(Time.time-Globa

17、lPramameters.time)*Time.deltaTime*6.0f;/左右移动 float rz=0f;名师资料总结-精品资料欢迎下载-名师精心整理-第 12 页,共 21 页 -int myArray=1,2;float element=myArrayRandom.Range(0,myArray.Length);if(element%2=0)rz=Mathf.Sin(Time.time)*Time.deltaTime*(-1.0f);/上下移动 else rz=Mathf.Sin(Time.time)*Time.deltaTime*(1.0f);/上下移动 m_transform.

18、Translate(new Vector3(rx,0,rz);4.3 玩家移动逻辑实现 void MoveTo()if(Input.GetMouseButton(0)Vector3 ms=Input.mousePosition;/获得鼠标屏幕的位置 Ray ray=Camera.main.ScreenPointToRay(ms);/将屏幕位置转为射线 RaycastHit hitinfo;/用来记录射线碰撞信息 bool iscast=Physics.Raycast(ray,out hitinfo,1000,m_inputMask);/产生射线 if(iscast)m_targetPos=hi

19、tinfo.point;/如果射中目标,记录射线碰撞点 Vector3 pos=Vector3.MoveTowards(this.transform.position,m_targetPos,(m_speed+20)*Time.deltaTime);/获得朝目标移动的位置,第三个参数数移动的最大速度 this.m_transform.position=pos;/更新当前的位置名师资料总结-精品资料欢迎下载-名师精心整理-第 13 页,共 21 页 -4.4 玩家碰撞逻辑实现:void OnTriggerEnter(Collider other)if(other.tag.CompareTo(Pl

20、ayerRocket)!=0&other.tag.CompareTo(Quad)!=0)if(other.tag.CompareTo(HelicoptersRocket)=0)m_life-=2;else m_life-=1;if(m_life=350)canInstance=true;else if(currentScore=250&this.gameObject.tag.CompareTo(Model_Helicopters_Apache)!=0)canInstance=true;else if(currentScore=100&(this.gameObject.tag.CompareTo

21、(Enemy)=0|this.gameObject.tag.CompareTo(SuperEnemy)=0)canInstance=true;else if(this.gameObject.tag.CompareTo(Enemy)=0)canInstance=true;/控制挑战模式下游戏难度名师资料总结-精品资料欢迎下载-名师精心整理-第 18 页,共 21 页 -if(GlobalPramameters.currentLevel=3&this.m_enemy.tag.CompareTo(Model_Helicopters_Transport)=0)enemyNumber=25.0f;els

22、e if(GlobalPramameters.enemyCount 20)enemyNumber=5.0f;else if(GlobalPramameters.enemyCount 10)enemyNumber=10.0f;else enemyNumber=15.0f;m_timer-=Time.deltaTime;if(m_timer=0)m_timer=Random.value*enemyNumber;/Random.value随机生成 0.0到 1.0 的数 if(GlobalPramameters.currentLevel=3&this.m_enemy.tag.CompareTo(Mo

23、del_Helicopters_Transport)=0)m_timer=17;else if(m_timer 4)m_timer=4;if(m_gameModel=SurviveModel&canInstance)Instantiate(m_enemy,m_transform.position,Quaternion.identity);else if(m_gameModel!=SurviveModel)Instantiate(m_enemy,m_transform.position,Quaternion.identity);名师资料总结-精品资料欢迎下载-名师精心整理-第 19 页,共 21

24、 页 -GlobalPramameters.enemyCount+=1;第五章 收获在这次游戏设计开发中,使用了Unity3d,VS2012,3dMax等开发工具,涉及到的关键技术有 UV动画的制作,物体精确碰撞检测的实现,物体追随鼠标移动,需要改进的地方,游戏背景比较单调,战机类型较少,敌机级别种类太少,战机的功能、子弹种类。特效等等。第六章 参考文献【1】Unity3D 游戏开发 _宣雨松著 _人民邮电出版社【2】Unity3D 手机游戏开发金玺曾著清华大学出版社【3】3ds max 总动员 Modeling 人体建模篇(4DVD)作者:窦项东出 版 社:科学出版社【4】从零开始:3ds

25、max基础培训教程(3ds max7中文版)作者:詹翔,王海英出版 社:人民邮电出版社名师资料总结-精品资料欢迎下载-名师精心整理-第 20 页,共 21 页 -学生学习心得通过本次游戏开发,加深了我对游戏设计与实现的理解,增强了对理论知识的运用和理解,同时也发现了自己的很多不足之处,学到了自学到一些其他方面的知识。也锻炼了团队协作能力。同时要感谢技术好的同学和老师对我们帮助和指导。学生(签名):杨鹤 2015年 07 月 04 日诚信承诺本人郑重声明所呈交的课程报告是本人在指导教师指导下进行的研究工作及取得的研究成果。据我所知,除了文中特别加以标注的地方外,论文中不包含其他人已经发表或撰写过的研究成果。与我一同工作的同学对本文研究所做的贡献均已在报告中作了明确的说明并表示谢意。学生(签名):杨鹤任课教师评语成绩评定:任课教师(签名):年月日名师资料总结-精品资料欢迎下载-名师精心整理-第 21 页,共 21 页 -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术总结

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁