ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:700.31KB ,
资源ID:10541346      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10541346.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(unity3d小游戏开发星空大战毕业实训报告大学论文.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

unity3d小游戏开发星空大战毕业实训报告大学论文.docx

1、unity3d小游戏开发星空大战毕业实训报告大学论文 毕业实训报告课题名称: Unity 游戏开发 专 业: 移动开发 班 级: 学 号: 学生姓名: 指导教师: 年 月 日中 原 工 学 院毕 业 实 训 任 务 书 年 月9日学生姓名学号专 业软件开发班级课题名称Unity3D小游戏开发(星空大战)课题来源指导教师专业软件工程职称讲师 课题说明:开发路线: 1,游戏背景(连续播放) 2,添加主角 3,设置游戏主角的动画 4,添加两种子弹并设置子弹的运动 5,添加三种子弹 设置子弹的自动生成和运动 6,添加两种奖励物品 设置奖励物品的自动生成和运动 7,设置主角的控制 7.1检测手指触摸 7

2、.2问题:防止主角飞出屏幕 8,设置Tag 添加子弹和敌人的碰撞 9,设计敌人 0 1 2 震动动画和爆炸效果 10,添加脚本GameManager做游戏的控制 11,统计分数 摘 要摘 要 游戏,目前已经是最大众化的娱乐之一,而其中的3D游戏也是技术含量较高的项目之一。Unity3D是一个3D/2D游戏开发工具和游戏引擎套件,其中包括了图形、音频、物理、网络等多方面的引擎支持,并且有一个非常强大的编辑器来整合这一切,非常适合于游戏开发。本文主要是以Unity5.3.8为开发环境,设计并开发一款单机版的三维游戏直升机大战,旨在介绍直升机战斗游戏的实现方法,并逐步介绍使用Unity3D开发3D游

3、戏的方法和技巧。通过这次游戏制作,使我体会到了,制作一个游戏所需要做的工作,包括前期的游戏策划,素材的制作,到后期的游戏的设计,代码实现等,最终形成一个完整的3D游戏,并通过Unity3D选择平台生成可执行文件。但本次设计的直升机战斗游戏所做工作还不够完善,开始场景中菜单比较简单,游戏中武器只有一种,关卡也只有一个,这些都需要以后进一步设计. 第1章 项目分析1.1 Unity 及其组成的介绍本书主要讲解的是,如何使用 Unity 开发 2D 游戏。但在开始讲解之前,最好先熟悉一 下 Unity 这个工具。本章会首先介绍 Unity 的下载和安装,然后会介绍 Unity 界面的各组成 部分,这

4、些知识会在本书后面的章节频繁使用,所以不要掉以轻心。1.2 Unity 概述Unity 现如今已是非常的流行,因此在开始学习 2D 游戏开发之前,本节就来简要说明 下 Unity,及其下载和安装方法。 1.Unity 简介 Unity 是一款跨平台的专业游戏引擎, 可以使用它轻松的开发各种 2D 和 3D 游戏, 然后 部署到各种游戏平台上。 当然也包括这些主流游戏平台: Windows、 iOS、 Android、 Xbox 360、 PS3。 第2 章 2.1 需求分析玩家:控制游戏中的战机,向敌机发出攻击;敌机: 敌机不会发射子弹攻击玩家,boss敌机由程序控制自动向玩家飞机发出攻击子弹

5、: 玩家和boss 敌机都拥有自己的子弹,玩家的子弹可以用来攻击所有的敌机子弹礼包:玩家飞机得到子弹礼包后,玩家的飞机会在一段时间内有发射双排子弹功能炸弹礼包:玩家飞机得到子弹礼包后,玩家飞机如果使用炸弹可以清除屏幕上除boss外的所有敌机。 2.2 功能需求:1用户进入游戏开始菜单可以选择开始游戏,退出游戏,游戏帮助;2进入游戏后可暂停游戏3玩家飞机以一定速度自下而上飞行,用户可以控制飞机前后左右移动4玩家飞机一直发子弹,用户通过控制飞机位置来扫描敌机;5不同种类的敌机以一定速度随机出现;6玩家飞机的发射子弹击中敌机后消失。7玩家飞机达到一定分数后,程序会随机提供子弹包和炸弹包;8玩家与礼包

6、碰撞后即可得到礼包;9弹礼包后,玩家的飞机会在一段时间内有发射双排子弹功能10进行游戏时,屏幕左上角会显示用户达到的分数;2.3 用户功能需求 由于本游戏交互性好,简单易操作,对用户并没有特殊的要求。一般用户经过几分钟后就可以掌握游戏规则。2.4 游戏性能需求 1)实时性: 本应用为手机游戏对于用户操作必须做出立即响应,否则本游戏失败 2)单机手机游戏最大的特点纪委已操作行,用户在不看说明的情况下也能够玩,并且在玩过几遍之后即熟悉本游戏规则。这是本应用对于操作性的要求。2.5 游戏流程: 如图2.5-1 第3章 场景设计3.1.创建游戏场景 1.由于创建的是2d项目,则将图片拖入Scene中,

7、该图片自动成为一个精灵,所以将图片信息拖入摆放即可。 如图 3-1-1 所示2.下面创建一个GameManager文件,其绑定在摄像机中,主要负责飞机生命,玩家得分,背景播放等的显示功能。而生命,得分的显示需要我们创建GUIText来摆放。public enum GameState Runing, Pausepublic class GameManager : MonoBehaviour public static GameManager _instance; public int score=0; private GUIText guiText; public GameState gameS

8、tate = GameState.Runing; void Awake() _instance=this; guiText=GameObject.FindGameObjectWithTag(ScoreGUI).GetComponent(); / Update is called once per frame void Update () guiText.text=Score:+score; public void transfromGameState() if(gameState=GameState.Runing) pauseGame(); else if(gameState=GameStat

9、e.Pause) continueGame(); 3.然后我们来实现背景的滚动。首先创建两个一样的背景图片上下摆放,如下图所示,这里切换到3d模式,更加形象如图 3-1-34.下面创建用于绑定在背景上的脚本BackgroundTransform,代码如下public class BackgroundTransform : MonoBehaviour public static float moveSpeed = 2f; / Update is called once per frame void Update () this.transform.Translate( Vector3.down

10、* moveSpeed * Time.deltaTime ); Vector3 postion = this.transform.position; if(postion.y4.3f) Destroy(this.gameObject); void OnTriggerEnter2D(Collider2D other) if(other.tag=Enemy) if(!other.GetComponent().isDeath) other.gameObject.SendMessage(BeHit); GameObject.Destroy(this.gameObject); 6.上面代码中我用了bul

11、letTop,bulletLeft,bullfight,这是我为主机添加的两个子对象,主要是用于发射子弹,相当于炮筒吧,而bullet则是定义的预设,其中绑定的脚本后面会说明。3-1-6代码实现如下:public class Gun : MonoBehaviour public float rate =0.2f; public GameObject bullet; public void fire() GameObject.Instantiate(bullet,transform.position,Quaternion.identity ); public void openFire() In

12、vokeRepeating(fire,1,rate); public void stopFire() CancelInvoke(fire); 好了,通过以上的代码我们就可以按键盘的方向键移动飞机,按空格键发射子弹了,我已经等不及要打敌人了。3.2 创建敌机 1.敌机也是先拖入敌机图片,然后绑定脚本,添加组件,然后保存为预设,我们以后还有个敌机生产器要生产敌机呢。我创建了三种敌机预设 3-2-1 敌机预制2.敌机主要是移动,碰撞。下面来看看敌机脚本:public enum EnemyType smallEnemy, middleEnemy, bigEnemypublic class Enemy

13、: MonoBehaviour public int hp = 1; public float speed = 2; public int score = 100; public EnemyType type= EnemyType.smallEnemy; public bool isDeath = false; public Sprite explosionSprites; private float timer=0; public int explosionAnimationFrame=10; private SpriteRenderer render; public float hitTi

14、mer = 0.2f; private float resetHitTime ; public Sprite hitSprites; / Use this for initialization void Start () render = this.GetComponent(); resetHitTime=hitTimer; hitTimer=0; / Update is called once per frame void Update () this.transform.Translate( Vector3.down*speed*Time.deltaTime ); if(this.tran

15、sform.position.y=explosionSprites.Length) /destroy Destroy(this.gameObject); else render.sprite= explosionSpritesframeIndex; else if(type=EnemyType.middleEnemy|type=EnemyType.bigEnemy) if(hitTimer=0) hitTimer-=Time.deltaTime; int frameIndex = (int)(resetHitTime-hitTimer)/(1f/explosionAnimationFrame)

16、; frameIndex%=2; render.sprite= hitSpritesframeIndex; if (Input.GetKeyDown(KeyCode.Space) & BombManager._instance.count0 ) toDie(); public void BeHit() hp-=1; / explosion if(hp Animation和 Winodws - Animator可以打开如下窗口。 如图 3-1-3 如图 3-1-3-14.下面是敌机生产器,在主界面的左右两边的顶部分别放上两个空物体用来创建敌机。敌机创建时间为13秒不等,然后绑定创建脚本即可。 p

17、ublic class Spawn : MonoBehaviour public GameObject enemy0Prefab; public GameObject enemy1Prefab; public GameObject enemy2Prefab; public GameObject awardType0Prefab; public GameObject awardType1Prefab; public float enemy0Rate = 0.5f; public float enemy1Rate = 5f; public float enemy2Rate = 8f; public

18、 float awardType0Rate = 7; public float awardType1Rate = 10; / Use this for initialization void Start () InvokeRepeating(createEnemy0,1,enemy0Rate); InvokeRepeating(createEnemy1,3,enemy1Rate); InvokeRepeating(createEnemy2,6,enemy2Rate); InvokeRepeating(createAwardType0,10,awardType0Rate); InvokeRepe

19、ating(createAwardType1,10,awardType1Rate); / Update is called once per frame void Update () public void createEnemy0() float x = Random.Range(-2.15f,2.15f); GameObject.Instantiate(enemy0Prefab,new Vector3(x,transform.position.y,0),Quaternion.identity); public void createEnemy1() float x = Random.Ran

20、ge(-2.04f,2.04f); GameObject.Instantiate(enemy1Prefab,new Vector3(x,transform.position.y,0),Quaternion.identity); public void createEnemy2() float x = Random.Range(-2.04f,2.04f); GameObject.Instantiate(enemy2Prefab,new Vector3(x,transform.position.y,0),Quaternion.identity); public void createAwardTy

21、pe0() GetComponent().Play(); float x = Random.Range(-2.1f,2.1f); GameObject.Instantiate(awardType0Prefab,new Vector3(x,transform.position.y,0),Quaternion.identity); public void createAwardType1() GetComponent().Play(); float x = Random.Range(-2.1f,2.1f); GameObject.Instantiate(awardType1Prefab,new V

22、ector3(x,transform.position.y,0),Quaternion.identity); 5.关于碰撞检测敌机碰撞,如果碰到了敌机死亡:3-1-5.1敌机碰撞,由于只要碰撞就死亡,所以动画帧执行时间快,死亡很快。运行界面:3-1-5.23.2 UI 设计 :每次打死敌机加分,三种不同的加分分数,分别5,10 ,15分。在游戏界面编辑创建游戏Text,记录分数,以及退出时记录最高成绩。重新开始按钮,和退出成绩按钮Button组件。如图视窗所示: 3-2-1 Ok!下面开始通过代码来控制程序的显示和执行: 3-2-2运行程序效果:死亡时保存记录最高分 3-2-3 可以看出图中我

23、设计了奖励,保存为预制体 如果吃到奖励增加左右子弹的发射攻击敌机 3-2-4 控制奖励的移动逻辑: 3-2-5运行如下: 3-2-6 游戏结束时点击退出和重新开始执行不同的事件。 退出: 3-2-7 退出代码图重新开始就再次开始重玩即可。第4章 第五章 结束语本章是对整个实训过程的总结,首先总结实训完成情况(很好完成、较好完成、还是未完成等),要具体说明开发效果,有哪些不足,有哪些待改进;然后总结自己的心得体会,有哪些收获,有哪些经验,遇到了什么问题,是如何解决的,对整个行业的认识有什么提高,对自己的优势劣势有什么认识等等,内容不限。参考文献1 童爱红. Visual C#.NET应用教程M. 北京:人民邮电出版社,2004.32 李兰友 杨晓光. Visual C#.NET程序设计M 北京:清华大学出版社,2004.53 韩玉民. 计算机专业英语教学研究与实践 J.计算机与信息技术,2008,(6):106-107.4 When mouse use computer.EB/OL. 2008-12-26.附录A: 附加图、表附录B: 主要源程序

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1