游戏程序设计课程报告报告题目太空大战游戏程序设计学院名称信息科学与技术学院专业名称软件工程学生姓名学生学号任课教师报告成绩教务处制2015年07月04日目录第1章引言............................................................................................................................21.1游戏设计背景..........................................................................................................21.2游戏规则..................................................................................................................31.3主要研究内容..........................................................................................................5第2章游戏开发工具和关键技术简介................................................................................52.1开发工具...................................................................................................................52.2关键技术...................................................................................................................5第3章游戏程序总体设计....................................................................................................73.1游戏总体流程:.......................................................................................................73.2游戏类图:...............................................................................................................8第4章游戏程序实现与测试..............................................................................................104.1敌人碰撞逻辑的实现:.........................................................................................104.2终极BOSS的移动实现:.......................................................................................114.3玩家移动逻辑实现.................................................................................................134.4玩家碰撞逻辑实现:.............................................................................................144.5游戏界面GUI显示逻辑实现:.............................................................................144.6敌人生成逻辑实现:.............................................................................................18第五章收获...................................................................................................................20第六章参考文献...........................................................................................................20第1章引言1.1游戏设计背景本次设计游戏为一款飞行射击类游戏,名字为太空大战。该游戏具有普通游戏一样的功能,比如场景设计,纹理贴图,人物移动,碰撞检测,生命值等元素。和团队一起设计并实现该游戏一方面巩固课堂学到的知识,学以致用,加深理论知识的理解,另一方面也锻炼了自己的实际编码能力和团队协作的能力,是一次难得又宝贵的开发经历。目前市面上的飞行射击游戏还算火爆,随着智能手机的普及,人们越来越多的使用手机玩手机游戏,其中以休闲类游戏为代表,比如成绩火爆过的《愤怒的小鸟》,《flappybird》,《雷电3D》,《现代战争》等游戏都广受好评。1.2游戏规则本款太空大战游戏分为两种模式:挑战模式和生存模式。玩家可在游戏主界面进行选择,如下图:其中挑战模式分为4个关卡,每个关卡的难度依次递增,玩家必须消灭一定数量的敌人,得到规定的分数才可以进入下一关。每一关的敌人会有所不同,难度也依次增加。最后一关为挑战终极BOSS,消灭BOSS后即可通关。下图分别为第二关和终极BOSS:生存模式中没有关卡限制,以计分为主,随着玩家分数的增加,游戏难度会逐渐加大,以敌人数量增加和类型增多来表现,玩家每次得到一百分,自己生命值就会增加一,初始生命为10,玩家生命耗尽则游戏结束,如下图:1.3主要研究内容在本次太空大战游戏设计中,我主要负责编码实现,精确碰撞技术的研究等内容。第2章游戏开发工具和关键技术简介2.1开发工具本次游戏开发语言使用C#采用Unity3d4.6游戏引擎开发代码编写使用VS2012模型制作采用3dMax20122.2关键技术游戏中设计的关键技术主要有物体的精确碰撞检测,背景动画的循环播放。精确碰撞检测:物体的精确碰撞实现方法有很多,在这个游戏中使用的是制作模型来达到精确碰撞的目的。首先在3dMax中制作出敌人的模型和一个同模型相接近的骨骼,并依附在模型中一起打包成FBX格式的模型,然后在Unity3d中直接导入该模型,就可以直接使用之前制作好的骨骼来做精确碰撞处理,如下图:背景动画的循环播放:实现背景的循环播放方法也很多,常见的比如直接使用2张可以前后对接的图片,当一张图片播放完成后直接在后面接入另一张图片,重复此过程,即可达到动画循环的目的。在这个有些中,我直接使用的Unity3d中的动画系统来制作UV动画,如下图:第3章游戏程序总体设计3.1游戏总体流程:首先玩家进入游戏主界面,进行选择,点击退出则直接退出游戏。选择挑战模式则进入游戏,游戏失败可以选择继续或者返回主界面,选择生存模式则当声明值耗尽时显示玩家分数并显示回退按钮退回到主界面,选择游戏帮助,则进入帮助界面。3.2游戏类图:(1)敌人类图:Enemy+m_point:int+m_explosionFX:Transform+m_life:float+m_speed:float#m_rottSpeed:float#m_transform:Transform#mplayer:Player-Start():void-Update():void#UpdateMove():virtualvoid-OntriggerEnter(Colliderother):voidSuperEnemy+m_rocket:Transform#m_fireTimer:float#m_player:Transform-Awake():void#UpdateMove():overridevoidSuperHelicoptersApacheEnemy+m_rocket:Transform+m_fireTimer:float+m_player:Transform+Awake():void+UpdateMove():overridevoidSuperHelicopterEnemy+m_rocket:Transform+m_fireTimer:float+m_player:Transform+UpdateMove():overridevoid+Awake():void游戏中有4种敌人,如上图所示,其中最原始的敌人是Enemy类,其它3中敌人都继承于Enemy,只是重写了移动方法和少量属性。(2)玩家类图: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():void-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子弹类分为玩家子弹和敌人子弹,其中敌人子弹继承于玩家子弹,重新了碰撞检测逻辑,由于Unity3d可直接在面板中设置脚本属性的值,因此每种敌人的子弹类不需要再重新写一个类,只需要依附EnemyRocket脚本后再重新设置值即可。第4章游戏程序实现与测试4.1敌人碰撞逻辑的实现:voidOnTriggerEnter(Colliderother){if(other.tag.CompareTo(PlayerRocket)==0)//如果子弹发生碰撞{Rocketrocket=other.GetComponentRocket();//获取子弹对象的引用if(rocket!=null){m_life-=rocket.power;//减少生命值if(m_life=0)//敌机生命值用尽就销毁{if(GlobalPramameters.gameModel==SurviveModel)//如果是生存模式{SurviveModelManage.Instance.AddScore(m_point);if(SurviveModelManage.Instance.GetScore()-100*GlobalPramameters.lifeAddCount=0