基于U3D的坦克大战

基于U3D的坦克大战游戏的设计与实现

摘要:当今社会的科技水平和经济水平在迅速发展着,游戏行业也以惊人的速度发展着。现在的游戏行业可以说已经占据了整个经济市场举足轻重的位置,同时也直接催生了电子竞技的诞生。电子游戏便成了人们休闲生活的又一重要方式。虽然每年出现的游戏作品有很多,但足够优秀强大的游戏作品却很稀缺。而Unity3D这款游戏引擎十分强大,只要有很好创意自己做一个游戏也是完全有可能的,所以学好这款软件也有重要的意义[程彬彬,王明鑫,商楠.浅谈游戏开发平台Unity3D的应用与发展前景[J].通讯世界,2016(14):236.]。
在如今科技发达的社会下,自己动手做一个自己喜爱的游戏已经不是遥不可及的一个梦了。通过这次设计设计一个2D的坦克大战游戏来对Unity3D有一个基本且全面的认识,在认识到Unity3D这款游戏引擎的强大之处的同时,还可以大开脑洞让自己亲自动手开发一款特别的游戏。Unity3D支持多个平台的移植,也可以方便导入各方面的插件,同时在程序移植的问题上也不会有很大的问题。此次坦克大战游戏主要分为UI设计、物理仿真、脚本控制等模块[亚当斯.游戏设计基础[M].北京:机械工业出版社,2009.]。UI设计需要先完成各种所需材料的建模模型,可以直接导入在外面画好的模型文件,直接拖动操作即可完成导入,在整个设计中基本都是可以通过拖动操作实时完成画面设计,这种方式极大提高了开发效率,同时设计过程中也非常直观地看到自己的进程[马晓萍,刘静.基于Unity3D的坦克大战游戏设计与实现[J].数字技术与应用,2017(06):168+171]。物理仿真需要考虑物体之间的穿模问题和子弹碰撞问题,需要为各个模型添加一个碰撞器,需要使用Box ColliDer 2D的插件[吴亚峰 于复兴. Unity3D游戏开发技术详解与典型案例[M].北京:人民邮电出版社,2012.]。同时也需要在经常移动的模型上加上刚体,需要使用Rigidbody 2D的插件,这样才能触发碰撞效果。脚本控制使用C#的编程语言,C#由C和C++衍生出来的面向对象的编程语言,它安全,稳定,简单,它在继承C和C++强大的功能的同时去掉了一些它们复杂的特性,所以也极大提高了开发者的脚本编程速度[李兰友 杨晓光.Visual C#.NET程序设计[M]. 北京:清华大学出版社,2004.5.]。目前我所使用的Unity3D的版本是2019.2.17f1 (64-bit)。
坦克大战的实现将为其他有这方面意向的人打开新世界的大门,让他们也可以了解到这款游戏引擎的强大之处的同时也可以引发自己动手作游戏的念头,虽然这只是一款小游戏,但涉及的技术点也较为广泛,在可以引新手入门的同时也可以为有同样的问题提供参考。
关键词:Unity3D,C#,游戏引擎,坦克大战游戏

Design and implementation of tank battle game based on U3D

Abstract:Nowadays, the level of technology and economy is developing rapidly, and the game industry is developing at an amazing speed. Now the game industry can be said to have occupied a pivotal position in the whole economic market, and also directly gave birth to the birth of E-sports. Video games have become another important way of people’s leisure life. Although there are many game works appearing every year, there are few excellent ones. And unity3d is a very powerful game engine. It’s possible to make a game by yourself as long as you have good ideas. So it’s also of great significance to learn this software well.
In today’s technologically advanced society, it’s not an unreachable dream to make a favorite game by yourself. Through this design and design of a 2D tank war game, we can have a basic and comprehensive understanding of unity3d. While recognizing the power of unity3d game engine, we can also open a big brain hole to develop a special game by ourselves. Unity3d supports the migration of multiple platforms, and it is also convenient to import various plug-ins. At the same time, there is no big problem in the migration of programs. The tank war game is mainly divided into UI design, physical simulation, script control and other modules. The UI design needs to complete the modeling model of various materials first, which can be directly imported into the model file drawn outside, and can be directly imported by dragging operation. In the whole design, it can basically complete the real-time picture design by dragging operation, which greatly improves the development efficiency, and at the same time, it can also see its own process very intuitively. Physical simulation needs to consider the problem of model piercing and bullet collision between objects. It needs to add a collider for each model and use Box collider 2D plug-in. At the same time, we need to add rigid bodies to the model that often moves. We need to use the plug-in of Rigidbody 2D to trigger the collision effect. Script control uses C ා programming language. C ා is an object-oriented programming language derived from C and C + +, which is safe, stable and simple. It inherits the powerful functions of C and C + +, and removes some of their complex features, so it also greatly improves the script programming speed of developers. The current version of unity3d I use is 2019.2.17f1 (64 bit).
The realization of tank war will open the door of the new world for other people with this intention, so that they can also understand the power of this game engine and trigger the idea of making games by themselves. Although this is only a small game, it involves a wide range of technical points, which can guide novices to the same problems as well as provide references.
Keywords: Unity3D,C#,Game engine,Tank battle game

目 录

第1章 绪 论 1
1.1游戏的开发背景及意义 1
1.2国内外研究现状 2
1.3游戏的主要研究内容 3
1.4游戏开发环境与开发工具 4
第2章 游戏需求分析 6
2.1可行性分析 6
2.1.1经济可行性 6
2.1.2技术可行性 6
2.1.3操作可行性 6
2.2游戏的总体需求 6
2.3游戏的业务需求 7
2.4游戏功能的需求分析 8
2.4.1坦克大战游戏功能分析 8
2.5 UML系统建模 9
2.5.1用例图 9
2.5.2用例图规约表 10
2.6本章小结 13
第3章 游戏设计 14
3.1游戏主菜单界面 14
3.1.1游戏主菜单界面的设计 14
3.2游戏界面 16
3.2.1游戏素材的导入,处理和场景的搭建 16
3.2.2玩家坦克的设计 18
3.2.3敌方坦克的设计 23
3.2.4初始化地图 25
3.2.5添加音效 28
3.3游戏帮助界面 29
3.4实现界面跳转 30
3.5 本章小结 30
第4章 游戏总体实现 31
4.1 游戏主菜单界面的实现 31
4.2 游戏界面的实现 31
4.3 游戏帮助界面的实现 33
4.4本章小结 34
第5章 游戏测试 35
5.1 游戏测试的目的 35
5.2 游戏测试的意义 35
5.3 测试用例及结果 35
5.4 本章小结 37
第6章 结束语 38
6.1 全文总结 38
6.2 课题展望 38
参考文献 39
致 谢 41

第1章 绪 论

1.1游戏的开发背景及意义
近几年来,全世界的经济水平的正在快速发展,同样的科技水平也不甘落后,也使得游戏行业也正在不断地蓬勃发展。现在的游戏行业和电影行业可以说已经同等重要了,人们的生活中到处充斥着各种游戏用语的声音,无论是手游还是端游又或者网游都有着大量的玩家,这成了人们休闲生活的又一重要方式。特别是游戏开发技术的进步使得现在大部分游戏作品画面越来越精美,游戏本身的趣味性也越来越高了,现在的优秀作品的游戏已经是人们的日常生活消遣娱乐的不二选择。在2019年,中国游戏产业取得了一个令人骄傲的成绩。2019年中在海南海口召开的2019中国游戏产业年会上,中国音像与数字出版协会游戏出版工作委员会发布的《2019年中国游戏产业报告》[中国音像与数字出版协会游戏出版工作委员.2019年中国游戏产业报告[R].2019.](以下简称《报告》)显示,2019年,中国游戏产业实际营销收入为2308.8亿元,同比增长7.7%;其中自主研发游戏的营销收入为1895.1亿元,同比增长15.3%;国产游戏“走出去”继续保持较快增长,海外市场营销收入为115.9亿美元,同比增长21%,《报告》显示,国内游戏企业通过深耕自主研发,探索新的发展模式和途径取得较快增长。2019年,中国自主研发游戏在国内市场实际销售收入已达到1895.1亿元,同比增加251.2亿元,增长率15.3%。中国自主研发游戏海外市场实际销售收入115.9亿美元,同比增长21%,增速高于国内市场。在海外市场实际销售收入地区分布中,美国的收入占比达到30.9%,日本的收入占比达到22.4%,韩国收入占比为14.3%,3个地区合计占比达到67.6%,数据表明,美国已成为中国游戏企业出海的重要目标市场。
经济市场中增长速度最快的产业已经是非游戏产业莫属了,游戏产业在现在已经成为了人们关注的热点。其中游戏是属于文化创意产业的其中一员,而创意经济又是知识经济的核心所在,更是其经济的重要表现形式,如果没有创意,那么也将就没有新经济。游戏设计是文化艺术创意和商品生产的结合,游戏产业的发展在中国的经济发展具有十分重要的意义[孙煦东. 游戏改变教育?[N]. 中国教师报,2015-03-04(003).]:
1.有助于保护中华民族的传统文化和传统的价值观,以防文化侵蚀;
2.使得创意产业能高速发展,大大提高我国经济领域的发展速度;
3.提供趣味性高质量好的大众娱乐方式,极大提升消费者的休闲体验感受。
在科学技术如此发达的今天,游戏引擎受到的关注也持续高涨,目前主要的引擎有BigWorld引擎、Unreal Engine3虚幻引擎、Gamebryo引擎、Unity3D引擎,Unity3D是最近几年才流行起来,但它由于完美的跨平台系统使他迅速的在引擎市场占据了重要的地位[曲鹏翔.游戏引擎在游戏开发中的应用分析[J].卫星电视与宽带多媒体,2019(23):16+18.]。通过这次毕业设计在这里将介绍一款以Unity3D为开发平台,以C#为主要开发语言的坦克大战游戏。在早些年间,坦克大战游戏是一款曾经非常受欢迎的电视游戏机和掌上游戏机的游戏,在我的童年记忆里,我也时常用着小霸王牌的电视游戏机和我的小伙伴们一起玩这款游戏,它虽然表面看起来很简单,但却能让我们玩的不亦乐乎,令人着魔。如今回看过去,坦克大战最早还是出现在FC机上,它游戏规则简单,容易上手,使用户能感受到该游戏带来的乐趣,该游戏在保证运行效果的同时,具有设备要求低,跨平台性能好,运行流畅稳定的特点[马晓萍,刘静.基于Unity3D的坦克大战游戏设计与实现[J].数字技术与应用,2017(06):168+171.]。这次的设计以一个简单的坦克大战游戏为例,并且加以实现,在这个过程中里面涵盖了Unity3D涉及到的一些基本技术,能基本了解这个领域的底层技术并熟练掌握Unity3D游戏引擎的使用。

1.2国内外研究现状
在早些年间Unity3D的创始人最先开始的是在2004年创立的是一个叫Over the Edge Entertainment的公司,后来他在Mac上开发了一款名叫GooBall的游戏之后,他们便知道到了他们所用到的工具所隐藏的巨大价值,所以在2005年他们开始转向做游戏引擎,这样Unity1.0就诞生了。他们是在 Apple Inc.'s Worldwide Developers Conference的大会上第一次发表的,是作为Mac端的扩展工具Unity发布,随后的Unity就开始支持在Windows平台使用了。Unity3D的各版本的发布日志可以看出,他们每个版本都做了哪些更新,新添了哪些功能等,其实通过它们的更新日志可以看出来最初期那些版本都是一个非常低端的东西。也可以看出来他们前期的调试和各种API的改变,所以并不见得比两年前的战火引擎强大,但到了2006年的时候,由于技术的不断成熟他们荣获了Apple Design Awards的Best Use of Mac OS X Graphics奖项。此时的他们还是个PC游戏的开发工具。就在2007年,iphone第一代发布了!此时放眼望去,居然只有Unity支持iphone,随后的一段长的时间里,在那个时候开发iOS游戏的工具只有也仅有是Unity。2008年,Unity3D的公司名称正式更名为Unity Technologies,之后Unity3D被广泛应用着[宣雨松.Unity3D游戏开发[M].北京:人民邮电出版社,2012.]。
时至今日,虽然国内的很多游戏公司都已经加深了对游戏引擎的了解,但是如果一些中小公司要自主开发一款游戏的话,开发过程也将会十分困难,而且得到的经济收益也不高,所以,我国的互联网公司能拥有由自家研发的游戏引擎简直少得可怜,大部分公司还是继续使用着外国优秀的游戏引擎。虽然这两年来国内还是会有一些比较优秀的游戏作品出现,但如果和国外的游戏大作相比较,还是会有一定的距离。而现在国内很大一部分的游戏公司还是以代理国外优秀游戏为主,也从而导致了资金外流,不仅如此,我国优秀的本土传统文化也会慢慢的缺失。
随着移动硬件设备的日益强大,移动平台上的游戏也出现了惊人的增长。而移动领域存在诸多系统,常用的有Android,Windows Mobile,iOS等,而在各个平台上的移植和实现对于开发商来说是不经济的,然而目前国外优秀的成熟引擎已经成功的解决了这类问题,其中Unity3D在众多游戏引擎中最突出,Unity3D中使用虚拟机技术使游戏编译结果独立于平台执行[Lam Wing Man Wynne,Liu Xingyi. Does data portability facilitate entry?[J]. International Journal of Industrial Organization,2020,69©.]。因此如果有人有做游戏开发这方面工作的意向的,或者只想单纯想自己做游戏来玩的,来熟练理解和掌握这些引擎的使用也会有十分大的好处。
1.3游戏的主要研究内容
本次游戏设计主要分为游戏主菜单界面、游戏界面和游戏帮助界面这三大界面组成。游戏设计开始之前也需要先准备好游戏所需要用到的的素材,比如坦克模型,障碍物,子弹的模型,各种图片的设计和游戏里的各种音效等。
游戏主菜单界面:是游戏最开始进入的界面,打开游戏成功后,可以在此界面选择游戏的模式,其中有单人模式,自己一个为主角来进行游戏,同时可以选择双人模式,两个人可以操控各自坦克来进行游戏。同时也可以选择游戏帮助来快速了解本游戏的玩法。
游戏界面:是游戏的主界面,玩家在这个界面进行游戏,这里包含关于敌人包括的AI的编写,敌人的随机出生地方,敌人中弹判断等。还有主角的控制逻辑的编写,主角出生地,主角中弹判断和大本营中弹判断等。
游戏帮助界面:显示文本介绍本游戏的基本玩法,游戏的基本规则说明,单人模式的主角控制按键和双人模式的双主角控制按键的说明等。
1.4游戏开发环境与开发工具
本次设计基本在Unity3D上进行开发,Unity3D是一个可以让任何人实现制作游戏的梦想的开发工具,开发出来的游戏也能运行在PC、Mac OS、PS3、XBox360、Wii、IOS、Android等平台,另外也可以利用Unity Web player插件来发布网页游戏,以及支持开发线上游戏,是一个比较全面整合的专业游戏引擎[Yucong Pan. Design and Development of Card Games Based on Unity 3D[C]. Institute of Management Science and Industrial Engineering.Proceedings of 2019 2nd International Conference on Mechanical Engineering,Industrial Materials and Industrial Electronics(MEIMIE 2019).Institute of Management Science and Industrial Engineering]。Unity3D提供了简单容易看懂的操作界面,可以使开发者一边开发一边通过界面实时看到自己目前制作的结果。而且也支持PhysX物理引擎、粒子系统等,降低了开发者游戏开发的知识需求,减少了游戏开发所需的时间和制作成本[R. Andaru, B. K. Cahyono, G. Riyadi, et al. THE COMBINATION OF TERRESTRIAL LIDAR AND UAV PHOTOGRAMMETRY FOR INTERACTIVE ARCHITECTURAL HERITAGE VISUALIZATION USING UNITY 3D GAME ENGINE. 2019, XLII-2/W17:39-44.]。编写脚本全程用C#语言即可,而我这次的设计所用到的编译软件是用Microsoft Visual Studio2012,虽然版本比较低,但影响并不会很大。
其中Unity3D软件有以下几点特点[Xiaoling Shu. Design and Research of Virtual Experiment System for Network Attack and Defense Based on Unity3D[C]. Information Engineering Research Institute,USA、Asia Pacific Human-Computer Interaction Research Center,Hong Kong.Proceedings of 2018 4th International Conference on Mechatronic Systems and Materials Application(ICMSMA 2018).Information Engineering Research Institute,USA、Asia Pacific Human-Computer Interaction Research Center,Hong Kong]:
资源导入:Unity支持所有主要文件格式,并能和大部分相关应用程序协同工作。
综合编辑:在游戏的开发过程中,可以整体对每一个界面进行编辑,节约了一个个打开每个界面的时间,并且程序可以在界面中共享,提高了整体的效率。
平台发布多样性:Unity可以在多个平台上展现自己的作品,利用Build Setting功能,可以选择不同的平台发布自己的作品。
音效和视频:实时三维图形混合音频流和视频流。
脚本:Unity支持3种脚本语言,其中有JavaScript,C#,Boo。而这次的坦克游戏的脚本主要用C#语言。
Unity hub:Unity hub是一个包含了大部分Unity3D各种版本的下载器。
拖动操作:Unity3D软件中大部分的操作都可用拖动操作来实现,开发效率能大大提高。

第2章 游戏需求分析

2.1可行性分析
2.1.1经济可行性
基于U3D坦克大战的设计与实现是本人的毕业设计,从整个系统的设计
到开发都由本人自己完成,本人在开发的过程不需要付费服务,Unity3D这款软
件也是免费开放给学习者免费学习,完全实现了零经费输出。在整个游戏开发完
成并使用之后,玩家也可以直接下载程序包直接开始进行游戏,而游戏无论是下
载游戏前还是下载游戏后,都不需要花费玩家一分钱,可以直接打开游戏就可以
直接全程免费体验。
2.1.2技术可行性
该游戏为本人的毕业设计,而本人已基本了解程序开发流程和U3D的
基本用法,已经具备开发一个难度不大的游戏的技术。此游戏使用的开发工
具为Unity3D,大部分操作将在该软件上完成。另外需要采用C#语言编写脚
本,而编译工具为Microsoft Visual Studio 2012。
2.1.3操作可行性
在U3D上开发的程序可以直接windows系统下打开,里面简明整洁的
UI、易于操作的方式和无限的娱乐性是U3D坦克大战的优点。不管玩家曾经是否有接触过其他游戏的经历,完全上手这款游戏也完全不是问题。由此可见,操作方式和操作过程不会限制U3D坦克大战游戏。
2.2游戏的总体需求
这款坦克大战游戏是需要有三个界面:游戏主菜单界面、游戏界面和游戏帮助界面。游戏主菜单界面是玩家最开始所在的一个界面,可以让玩家选择开始游戏或者查看游戏帮助。游戏界面是玩家开始游戏后的界面,以供玩家在这个界面游戏,这里需要有地图,玩家坦克和敌方坦克,还有需要添加各种脚本用以实现游戏。游戏帮助界面是为了让玩家可以对这款游戏有一给详细的了解,使玩家能快速上手这款游戏。
2.3游戏的业务需求
以下是对坦克大战游戏的整体业务需求分析,如图2-1坦克大战游戏流程图。
在这里插入图片描述

图2-1坦克大战游戏流程图
玩家在打开游戏后将直接进入游戏的主菜单界面,其中上面有显示游戏名称。下方有可以供玩家进行选择的三个选项,其中分别有:游戏帮助,单人模式,双人模式。
其中选择游戏帮助的按钮可以弹出一个窗口,里面有记载了关于本游戏的基本控制按键和游戏规则的说明。
另外还有两种开始游戏的方式,因为本游戏有两种游戏模式,第一种是单人模式,只能由一个玩家进行游戏,其余的都是敌人。而第二种是双人模式,可以由两名玩家进行游戏,两名玩家分别控制不同的坦克进行游戏。
选择任意游戏模式将直接开始游戏进入游戏界面,此时游戏已经开始,玩家需要打倒其他敌方坦克来保护自己的大本营,游戏右方也会显示击倒敌方坦克的数量。如果大本营被破环,游戏将结束。也将会自动返回游戏主菜单界面。
2.4游戏功能的需求分析
这款坦克大战游戏主要分成三个部分,其中有游戏主菜单界面,游戏界面和游戏帮助界面。游戏主菜单界面:主要两种游戏模式并开始游戏的方法有单人模式和双人模式,也可以选择游戏帮助。游戏界面:主要包括单人进行游戏和双人同时一起控制坦克进行游戏。游戏帮助界面:主要用来显示游戏基本操作方法和游戏的规则。如图2-2坦克大战游戏功能模块图。
在这里插入图片描述

图2-2坦克大战游戏功能模块图
2.4.1坦克大战游戏功能分析
1.游戏主菜单界面:
(1)游戏开始:玩家可以在这个界面选择游戏模式,选择完成后可以直接跳到游戏界面直接开始游戏。
(2)游戏帮助打开:玩家在第一次玩这款游戏时可以在这个界面选择游戏帮助来直接打开游戏帮助界面,便可以快速了解这款游戏基本操作和游戏规则。
2.游戏界面:
(1)单人模式:玩家在选择单人模式时游戏只限有一名玩家进行游戏,此时只有一辆坦克孤军奋战保护大本营。
(2)双人模式:玩家在选择双人模式时游戏可以有两名玩家同时控制两辆坦克 进行协同作战,共同保护大本营。
(3)玩家的移动和攻击:编写用键盘所对应的键位控制玩家坦克的移动的脚本,编写玩家控制坦克攻击的脚本。
(4)敌方坦克的AI:编写敌方坦克自动运动和攻击的脚本。
(5)子弹:编写子弹飞行方向和飞行速度的脚本,以及与碰撞的物体的识别。
3.游戏帮助界面:
(1)游戏介绍:显示写有游戏的基本操作和游戏规则的窗口。

2.5 UML系统建模
统一建模语言(UML,UnifiedModelingLanguage)是面向对象软件的标准化建模语言,UML因其简单、统一的特点,而且能表达软件设计中的动态和度静态信息,目前已成为可视化建模语言的工业标准[Mert Ozkaya. Are the UML modelling tools powerful enough for practitioners? A literature review. 2019, 13(5):338-354.]。
2.5.1用例图
坦克大战游戏用例图如图2-3坦克大战游戏用例图。
在这里插入图片描述

图2-3坦克大战游戏用例图
2.5.2用例图规约表
玩家的用例规约表:
表2-1游戏帮助查看用例规约表
用例编号 2-1 用例名称 游戏帮助查看
功能描述 当玩家成功打开游戏后,可以选择查看游戏帮助,用以快速了解游戏的基本控制的键位和游戏规则。
执行者 玩家
前置条件 坦克大战游戏正常运行。
后置条件 返回主菜单界面
涉众利益 玩家
基本路径 1.游戏打开成功后,选择查看游戏帮助。
2.游戏帮助打开成功后,显示内容。
扩展 如果查看结束后可以直接选择返回,将返回到游戏主菜单界面。
字段列表 选项名称,游戏介绍。
业务规则 不能修改里面的内容。
备注 无
表2-2单人游戏用例规约表
用例编号 2-2 用例名称 单人游戏
功能描述 玩家成功打开游戏后可以选择单人模式直接开始游戏,此时将只能由一名玩家进行游戏。
执行者 玩家
前置条件 坦克大战游戏正常运行
后置条件 返回主菜单界面
涉众利益 玩家
基本路径 1.在游戏主菜单界面选择单人模式
2.开始单人模式游戏
扩展 游戏结束后将直接返回游戏主菜单界面。
字段列表 选项名称,击倒敌方坦克的数量。
续表2-2
业务规则 大本营被敌方坦克或者玩家坦克破环后游戏将结束,并返回游戏主菜单界面。
备注 无

表2-3双人游戏用例规约表
用例编号 2-3 用例名称 双人游戏
功能描述 玩家成功打开游戏后也可以选择双人模式直接开始游戏,此时将可以由两名玩家同时控制不同的坦克进行协同作战游戏。
执行者 玩家
前置条件 坦克大战游戏正常运行
后置条件 返回主菜单界面
涉众利益 玩家
基本路径 1.在游戏主菜单界面选择双人模式
2.开始双人模式游戏
扩展 双人模式下也可以只有一名玩家进行游戏,第二辆坦克不做控制也不受影响。
字段列表 选项名称,击倒敌方坦克的数量。
业务规则 大本营被敌方坦克或者玩家坦克破环后游戏将结束,并返回游戏主菜单界面。
备注 无
表2-4游戏分数查看用例规约表
用例编号 2-4 用例名称 游戏分数查看
功能描述 玩家在游戏进行中可以实时查看到自己所击倒敌方坦克的数量。
执行者 玩家
前置条件 坦克大战游戏正常运行,而且游戏已经开始。
后置条件 返回主菜单界面
涉众利益 玩家

                                                         续表2-4

基本路径 1.在游戏主菜单界面下选择开始游戏(即选择单人模式或选择双人模式,游戏将直接开始)。
2.游戏界面右方显示击倒敌方坦克的数量。
扩展 无
字段列表 选项名称,击倒敌方坦克的数量。
业务规则 无
备注 无
表2-5玩家坦克的移动用例规约表
用例编号 2-5 用例名称 玩家坦克的移动
功能描述 游戏开始时玩家可以控制自己的坦克在地图里自由移动。
执行者 玩家
前置条件 坦克大战游戏正常运行,而且游戏已经开始。
后置条件 读取玩家所在位置。
涉众利益 玩家
基本路径 1.在游戏主菜单界面下选择开始游戏(即选择单人模式或选择双人模式,游戏将直接开始)。
2.控制坦克移动
1.1玩家按下W键,坦克向上移动。
1.2玩家按下S键,坦克向下移动。
1.3玩家按下A键,坦克向左移动。
1.4玩家按下D键,坦克向右移动。
扩展 在地图内可自由移动。
字段列表 键位,击倒敌方坦克的数量。
业务规则 1.不能移动出地图外。
2.碰撞到障碍物时不能移动
备注 无
表2-6玩家坦克的攻击用例规约表
用例编号 2-6 用例名称 玩家坦克的攻击
续表2-6
功能描述 玩家坦克按下空格键可以随时随地发动攻击。
执行者 玩家
前置条件 坦克大战游戏正常运行,而且游戏已经开始。
后置条件 子弹碰撞识别
涉众利益 玩家
基本路径 1.在游戏主菜单界面下选择开始游戏(即选择单人模式或选择双人模式,游戏将直接开始)。
2.玩家按下空格键使坦克进行攻击。
扩展 1.攻击墙体障碍物可以使其破坏消失。
2.比如草,水等障碍物,子弹的攻击是可以穿过。
3.可以攻击自己的大本营,但游戏也会因此游戏失败
字段列表 键位,击倒敌方坦克的数量。
业务规则 1.每次攻击由一定的时间间隔。
2.攻击出来的子弹也有一定的飞行速度。
备注 无

2.6本章小结
本章首先主要对坦克大战游戏各方面的可行性进行了分析,接下来对坦克大战游戏的业务需求进行详细分析并且用业务流程图分别展示了坦克大战游戏的业务流程;通过功能模块图展示了坦克大战游戏的功能需求;最后,为了更加直观地向玩家展示坦克大战游戏的各种功能,给出了用例图并对各个用例用表格更加详细地对坦克大战游戏进行简单明了的说明。

第3章 游戏设计

因为这款坦克大战游戏是由游戏主菜单界面,游戏界面和游戏帮助界面这三个界面共同组成的,所以下面将分开三个界面进行设计和实现。
3.1游戏主菜单界面
3.1.1游戏主菜单界面的设计
1.场景的搭建:首先需要创建并命名好第一个场景当作游戏主菜单界面,设计好主摄像机,设置好摄像机高度,游戏的背景色调和地图比例等,我这里是选择16:10的比例。如图3-1游戏主菜单界面的场景。
在这里插入图片描述

如图3-1游戏主菜单界面的场景
2.UI设计:在Hierarchy面板按下鼠标右键选择创建UI_Image组件,此时将创建好一个UI图片,该软件也会自动生成UI设计所需要的两个组件:Canvas和EventSystem,在调整好图片在场景中的比例大小后,就可以Inspector面板里把事先准备好的图片素材拉入到创建的Image组件Script插件的Source Image里。另外创建三个空的游戏物体,用来作为指针选择的移动。设计完成后如图3-2 UI设计。
在这里插入图片描述

图3-2 UI设计
3.坦克指针脚本的编写:为了实现指针的移动和实现场景的跳转,需要为坦克指针添加一个脚本。其中使用Input.GetKeyDown()函数监听玩家的键盘的输入,同时记录按下的键位的次数以此来实现坦克指针到底跳转到哪一个空的物体上。而使用SceneManager.LoadScene()函数来实现场景之间的跳转。如图3-3实现指针跳转的方法。
在这里插入图片描述

图3-3实现指针跳转的方法
这里需要注意的是,这里需要引用到创建好的三个空物体,所以需要在Inspector面板里的Scirpt的插件里拉入实体以供引用,不然软件将会报错,下面的其他游戏界面的开发大部分引用都是如此。如图3-4引用物体
在这里插入图片描述

图3-4引用物体
3.2游戏界面
3.2.1游戏素材的导入,处理和场景的搭建
1.游戏场景的搭建:首先需要创建并命名好第二个场景,同时设计好主摄像机,设置好摄像机高度,游戏的背景色调和地图比例等,我这里是选择5:4的比例,这样看起来也会比较舒服,而且两边空余的部分也可以用来显示生命值和得分。如图3-5游戏场景。
在这里插入图片描述

图3-5游戏场景的搭建

2.素材处理:把准备好的游戏所需要的素材图片,使用拖动操作将准备好的素材拖入到已经创建好了的工程里,并在Inspector面板里设置好它们的长宽高的值。然后把需要的素材拉到创建的场景里面,此时Hierarchy面板会自动生成它们相对应的克隆体。同时可以使用多张图片制作2D动画,使游戏看起来更加生动。如图3-6游戏素材处理。
在这里插入图片描述

图3-6游戏素材处理
1.添加碰撞器:草丛是可以穿过也可以在里面隐藏,所以草丛不需要碰撞器,其他素材需要发生碰撞,所以需要添加一个Box collider2D的碰撞器,为了成功碰撞还需要在移动的一方添加一个Rigidboby 2D的刚体,这样才能实现碰撞效果。如图3-7添加碰撞器。
在这里插入图片描述

图3-7添加碰撞器
2.2D渲染层级设置:当两种元素重合在一起时需要考虑谁应该覆盖谁的问题,
障碍物是因为加了碰撞器的缘故是不能进行交互穿插的,所以它们和坦克可以是同层级,但草丛是可以穿过并可以隐藏的,所以层级是比坦克高的。而无敌光环特效是在坦克底下显示的,所以层级是比坦克低的。层级设置在Inspector面板里Sprite Renderer插件下的order in layer选项里设置数值,设置的数值越大,层级越高,越不会被覆盖。设置完成后结果如图3.8 2D渲染层级设置。
在这里插入图片描述

图3.8 2D渲染层级设置
3.2.2玩家坦克的设计
1.坦克的移动:此时需要为玩家的坦克添加一个脚本并打开编辑,使用的开发语言是C#,本人是用Microsoft Visual Studio2012上进行脚本编写和编译。在控制左右上下移动时需要添加两个监听器:float h = Input.GetAxisRaw(“Horizontal”)(监听玩家输入的按键是使坦克垂直方向移动的监听器)和float v = Input.GetAxisRaw(“Vertical”)(监听玩家输入的按键是使坦克垂直方向移动的监听器),而且监听到了键盘输入之后需要坦克进行移动,这是需要用到transform.Translate()函数。同时需要控制坦克移动时坦克的朝向,此时需要用到精灵渲染器(Sprite Renderer),使坦克方向转变时图片也能跟着切换,还需要添加一个移动优先级,这样可以防止坦克斜向运动。如图3-9玩家坦克的移动

					![在这里插入图片描述](https://img-blog.csdnimg.cn/3241a2f960dd46d59f26db9cb99708b6.png)
图3-9坦克的移动

2.坦克的攻击:打开脚本编写攻击方法,使用Input.GetKeyDown(KeyCode.Space)函数可以把坦克攻击键位设为空格键。同时需要有子弹产生,所以要引用子弹的预制体:public GameObject bullectPrefab;为了能产生实体的子弹,需要使用函数:Instantiate(bullectPrefab,transform.position,Quaternion.Euler(transform.eulerAngles + bullectEulerAngles))。其中该函数最后一个的参数是一个四元数的参数,为了让子弹发射出去后能与坦克的朝向方向一致,所以子弹产生的角度=当前坦克的角度+子弹应该旋转的角度:transform.eulerAngles + bullectEulerAngles。如图3-10坦克的攻击。
在这里插入图片描述

图3-10坦克的攻击
3.子弹的移动:此时需要在子弹的预制体上添加一个子弹移动的脚本,同样也使用transform.Translate()函数,初始化子弹速度可以使得子弹发出后可以沿当前方向进行移动。

4.坦克攻击间隔:为了游戏的公平和游戏的平衡,还需要在坦克的攻击加上时间间隔,相当于就是攻击CD。每次攻击后timeVal=0,使用if语句使攻击间隔时长为0.4秒:if(timeVal >=0.4f){Attack();}else{timeVal += Time.deltaTime;}。如图3-11坦克攻击间隔CD。
在这里插入图片描述

图3-11坦克攻击CD
5.子弹的触发方法:因为子弹在碰到不同的物体之后需要触发不同的方法,所以需要为子弹加入碰撞器和刚体的组件,因为此时子弹需要用到触发器,所以需要把碰撞器里的is trigger的选项勾上。因为子弹需要识别出所碰撞的物体是什么从而调用不同的方法,所以需要在Inspector面板里为各种物体加入标签,以供子弹分辨。如图3-12添加标签。
在这里插入图片描述

图3-12添加标签
然后在子弹的脚本里使用swich语句编写子弹在碰到不同物体时所调用的不同的方法。其中这里的子弹也区分为玩家的子弹和敌人的子弹,子弹在碰撞到玩家的坦克或敌方的坦克时还需要区分是玩家的子弹还是敌人的子弹,所以需要定义一个bool类型的子弹加以区分玩家的子弹和敌方的子弹。
在这里插入图片描述

图3-13子弹触发方法的代码
6.玩家坦克的无敌方法和死亡方法:玩家刚开始游戏时,或者复活时,身上会有一个无敌光环特效加身,且不受到任何敌人的伤害。在敌方坦克的子弹碰撞到玩家时玩家坦克将会消失,同时显示会爆炸特效。这里因为只有玩家坦克会有无敌光环,所以可以将特效拖入到玩家坦克的物体里,这样可以不用每次都需要调用光环特效,提高游戏性能。如图3-14玩家的无敌和死亡。
在这里插入图片描述

图3-14玩家的无敌和死亡
7.玩家坦克和敌方坦克的产生:因为双方坦克都是共同用一个特效,所以只需在出生特效里添加一个脚本里面编写产生方法即可,使用Instantiate()函数产生坦克。这里的玩家的出生特效和敌人的出生特效我用的是同一个特效,为了优化游戏,所以要区分出生特效产生的玩家还是敌人,还需添加一个bool类型的变量以供区分。如图3-15坦克的产生1,图3-16坦克的产生2。
在这里插入图片描述

图3-15坦克的产生1
在这里插入图片描述

图3-15坦克的产生2
3.2.3敌方坦克的设计
1.敌方坦克的AI:为敌方坦克添加脚本,而敌方坦克和玩家坦克功能基本相同,所以可以直接复制并加以修改即可。首先需要删除键盘的监听函数,为其加上一个随机函数让其模仿玩家的键盘输入。如图3-17敌人移动的随机函数。
在这里插入图片描述

图3-17敌人移动的随机函数
2.随机生成两种敌人:为了增加游戏的趣味性,可以生成两种敌人坦克,让它们有不同的属性值,比如运动速度,攻击CD等。而在上面的写好的出生特效上为一个敌人的产生添加一个随机函数即可。如图3-18随机产生敌人1,图3-19随机产生敌人2。
在这里插入图片描述

图3-18产生随机敌人1
在这里插入图片描述

图3-19产生随机敌人2
3.敌方坦克的死亡方法:当玩家子弹与敌方坦克发生碰撞后敌方坦克消失同时产生爆炸特效,也是在敌人脚本里编写一个Die()方法,使用Instantiate函数产生爆炸特效。如图3-20敌方坦克的死亡。
在这里插入图片描述

图3-20敌方坦克的死亡
3.2.4初始化地图
1.地图的产生:在完成好前面的素材处理和脚本编写后,可以开始创建玩家游戏的地图,首先创建新的空物体用来装载创建地图的功能并为其添加脚本编写随机生成地图的函数,为了不让每次开始游戏时地图都一样,这里使用随机函数使其在地图范围内随机生成障碍物,草,墙等物体,以达到每次游戏开始时地图都不一样。同时为了不让玩家或者敌人抛出地图外,需要在地图外围生成空气墙。如图3-21地图1,图3-22地图2,每次将随机产生不同地图。
在这里插入图片描述

图3-21地图1
在这里插入图片描述

图3-22地图2
2.坦克的产生:玩家敌人的产生位置和敌人的增加:使用Instantiate()函数,函数中的参数2是在地图相对的产生位置,只需设置好数值就能固定在一个点产生。如图3-23坦克的产生。
在这里插入图片描述

图3-23坦克的产生
3.显示得分和生命值:为了让玩家可以清楚看到自己的生命值和得分,可以在游戏两侧进行设计。所以也是需要创建UI_Image图片,同时为了显示实时的得分情况和剩余的生命值,需要新创建UI_Text文本。如图3-24显示得分和生命值。
在这里插入图片描述

图3-24显示得分和生命值
4.玩家状态的管理:创建一个新的空物体,添加脚本,在这里编写生命值,得分的总数和游戏输赢的判断的代码。如果玩家生命值为0的时候死亡,游戏将直接结束并返回第一个场景,而大本营被破环游戏也将直接结束并返回第一个场景。如图3-25玩家状态管理。
在这里插入图片描述

图3-25玩家状态管理
5.游戏结束的UI设计:为了让玩家更加直观的看到游戏已经结束,可以在游戏结束时显示一个画面,此时需要创建一个新的UI_Image,设置好图片大小,拖入准备好的结束图片即可。如图3-26游戏结束。
在这里插入图片描述

图3-26游戏结束
3.2.5添加音效
1.添加音效:为了增添游戏的趣味性,需要为游戏开始时、坦克爆炸时、坦克发出子弹时、子弹碰到障碍物时和子弹摧毁大本营时等等添加相应的音效,这就需要为上面物体加上Audio Sourse组件,并拖入准备好了的音频素材到该组件里Audio Clip中。如图3-27添加音效。
在这里插入图片描述

图3-27添加音效
3.3游戏帮助界面
1.游戏帮助界面设计:创建一个新的场景,并创建一个新的UI文本,里面显示游戏帮助的文本内容。且为文本添加一个脚本,用来设置一个返回到游戏主菜单界面的键位。如图3-28游戏帮助界面。
在这里插入图片描述

图3-28游戏帮助界面
3.4实现界面跳转
为了让各个界面实现跳转,C#里有已经封装打包好的方法可以供我们直接,这时只需在开头声明引用using UnityEngine.SceneManagement;并且使用SceneManager.LoadScene()函数即可。如图3-29实现从主菜单界面跳转到其他界面的方法。
在这里插入图片描述

图3-29实现从主菜单界面跳转的方法

3.5 本章小结
本章对坦克大战游戏的游戏主菜单界面,游戏界面,游戏帮助界面三个主要界面进行了详细的开发过程和步骤方法的说明,同时也会贴上对应的效果图,使其整个开发过程详细,直观。最后也会给出界面完成后的效果图。

第4章 游戏总体实现

4.1 游戏主菜单界面的实现
这是玩家在打开游戏成功后所看到的第一个界面,坦克指针最开始会停留在中间的那个选项,坦克指针所在的每一个位置对应一个选项,玩家可以通过按下键盘W和S进行上下移动,按下空格键表示确定选择。开始游戏和查看游戏帮助都可以在这个界面上进行选择,只有首先在这个界面上发出选择命令才能实现其他界面的跳转。
1.选择单人模式:选择第一个选项,完成点击事件后,将自动从游戏主菜单界面跳转到游戏界面开始游戏。
2.选择双人模式:选择第二个选项,完成点击事件后,将自动从游戏主菜单界面跳转到游戏界面开始游戏。
3.选择游戏帮助:选择第三个选项,完成点击事件后,此时将直接打开游戏帮助的界面,可直接浏览游戏介绍。如图4-1游戏主菜单界面
在这里插入图片描述

图4-1游戏主菜单界面
4.2 游戏界面的实现
这是玩家在游戏主菜单界面完成选项选择后开始游戏所看到的一个界面,是本游戏的主体,玩家也将在这个界面进行有趣的游戏,大部分的脚本代码都在这个界面实现。在游戏结束时也能跳转回到游戏主菜单界面重新等待选择。
1.开始单人模式游戏:此时在场上只有且仅有一辆玩家的坦克,初始生命值只为3,玩家需要以一己之力保护好大本营免遭破坏,生命值为零时游戏结束,大本营被破坏也将游戏结束,同时也需要击倒更多的敌方坦克来获得更高的分数。如图4-2单人模式游戏界面。
在这里插入图片描述

图4-2单人模式游戏界面
2.开始双人模式游戏:此时在场上会有了两辆不同玩家的坦克,颜色也各不相同。玩家1和玩家2可以同时进行游戏一起协力保护大本营免遭破坏,同时他们的生命值是共享的,生命值为5,生命值低于零后游戏也将直接结束。玩家双方可以一起击倒更多的敌方坦克来获得更高的分数。如图4-3双人模式游戏界面。
在这里插入图片描述

图4-3双人模式游戏界面
4.3 游戏帮助界面的实现
这是玩家在游戏主菜单界面完成选项选择后查看游戏帮助所看到的一个界面,里面将详细介绍了游戏的规则,玩家1和玩家2不同的键位控制。查看完成后也可以按下空格键直接返回到游戏主菜单界面。如图4-3游戏帮助界面。
在这里插入图片描述

图4-4游戏帮助界面
4.4本章小结
本章主要是对坦克大战游戏的总体实现的展现,在这里可以看到每个界面的实现情况,每个界面也会配有一些文字说明,最后也能给出各个界面的截图来展现游戏最真实实现的效果。

第5章 游戏测试

5.1 游戏测试的目的
找出软件中的漏洞是系统测试的目的,游戏的漏洞可能存在于软件、功能、过程、数据和编码中,我们需要在这些方面上进行测试以找到系统的漏洞并修复。在游戏设计和实现过程中检查出来的错误和缺陷需要在系统试运行当中通过游戏测试来实现,所以这个阶段是软件开发中必不可少的部分。总而言之,测试就是发现问题并进行改进,从而提升软件产品的质量[王子.3D测试之游戏测试篇[J].大众硬件,2003(02):109-112.]。
5.2 游戏测试的意义
在如今游戏泛滥的信息时代,大部分游戏作品的质量参差不齐,因此,为了杜绝低质量的游戏的蔓延,游戏测试是一个不可或缺的阶段。经过一系列的严格测试,可以找出游戏中难以发现的漏洞,有利于提高坦克大战的软件质量,使用户的体验感更加好,第一印象很重要,能体现出开发人员的诚意,可以给广大玩家留下一个好的最初印象,也有利于游戏的推广。
5.3 测试用例及结果
坦克大战游戏测试分为游戏主菜单界面测试、游戏界面测试和游戏帮助界面测试。
表5-1游戏主菜单界面测试用例及结果
用例编号 用例名称 测试目的 测试结果
A-1 TestPointer 测试界面里的指针指向会不会出现混乱 无论玩家按下多少次W和S键都不会出现混乱
A-2 TestOption 测试确定选项后是否发生界面跳转 玩家按下空格键后能发生界面跳转
续表5-1
A-3 TestInterface 测试跳转界面后是否正确 跳转的界面正确
5-2游戏界面用例及结果
用例编号 用例名称 测试目的 测试结果
B-1 TestMap 测试每次开始游戏时是否能随机产生新地图 玩家每次开始游戏后都能产生不同新地图
B-2 TestLocation 测试玩家和敌人出生位置是否固定 玩家和敌人出生位置始终不变
B-3 TestMove 测试玩家能否控制玩家坦克移动 玩家能控制玩家坦克进行移动
B-4 TestAttack 测试玩家坦克能否正常发出子弹 玩家坦克能正常发出子弹且去坦克移动方向一致
B-5 TestInvincible 测试玩家坦克在有无敌光环的时候敌方坦克能否对其进行伤害 敌方坦克的子弹打中有无敌光环的玩家坦克时并没有其他效果
B-6 TestResurgence 测试玩家坦克生命值不为零之前能否正常复活,敌人能否正常复活 玩家坦克和敌人能正常复活
B-7 TestScore 测试玩家的得分显示是否出错 玩家的得分显示没有出错
B-8 TestLife 测试玩家的生命值显示是否出错 玩家的生命值显示没有出错
B-9 TestBullet 测试玩家子弹和敌人子弹是否出现混乱并且能否识别所碰撞到的物体 玩家子弹和敌人子弹没有出现混乱并且能识别所碰撞到的物体
B-10 TestEffect 测试特效能否显示且显示是否出错 特效能正常显示且显示没有出错
续表5-2
B-11 TestMusic 测试游戏中是否发出游戏音效且没有出错 游戏中能发出各种游戏音效且没有出错
B-12 TestCollision 测试玩家坦克和敌方坦克是否能穿过障碍物、水、墙、空气墙、大本营 玩家坦克和敌方坦克不能穿过障碍物、水、墙、空气墙、大本营
B-13 TestEnd 测试玩家坦克生命值为零或大本营被破坏时游戏能否结束,且结束提示界面能否显示 玩家坦克生命值为零或大本营被破坏时游戏能结束,且结束提示界面能显示
B-14 TestReturn 测试游戏结束后能否自动返回游戏主菜单界面 游戏结束后能自动返回游戏主菜单界面
B-15 TestModel 测试双人模式是否能正常游戏 双人模式能正常游戏
表5-3游戏帮助界面用例及结果
用例编号 用例名称 测试目的 测试结果
C-1 TestHple 测试游戏帮助界面能否显示且显示没有错乱 游戏帮助界面能正常显示且显示没有错乱
C-2 TestReturn 测试玩家按下空格键后能否自动返回游戏主菜单界面 玩家按下空格键后能自动返回游戏主菜单界面

5.4 本章小结
本章首先阐述了系统测试的目的以及意义,之后给出了测试用例,最后进行多次反复测试证明了坦克大战游戏的大部分功能是没有问题的。

第6章 结束语

6.1 全文总结
通过这几个月不懈的努力,基于坦克大战游戏的设计与实现到这里基本结束了。基于U3D的坦克大战游戏在界面设计上基本使用黑色作为背景色调,向用户展现了一种简洁大方。C#是这款坦克大战游戏的开发语言。而C#由C和C++衍生出来的面向对象的编程语言,它安全,稳定,简单,所以也能提高游戏开发速度。同时使用了非常优秀且简易的Unity3D的游戏引擎作为平台来进行开发,也极大提高了开发的效率。其实我选择Unity3D最主要的因素是因为这款软件的个人用户版本身是免费的,而且里面提供的功能也十分的强大和完整。目前,基于Unity3D的坦克大战游戏在这些工具的支持下基本都能运作。
6.2 课题展望
由于受到知识量不足的条件的约束,所以基于U3D的坦克大战游戏没有更多其它的功能,如果有机会和条件,基于U3D的坦克大战游戏会适当加入更好玩的游戏模式,比如闯关模式等,或者通过网络用不同的设备不同的地点实时共同进行游戏。以此来增加本游戏的趣味性和可玩性;由于时间问题,基于U3D的坦克大战游戏的设计与实现的界面可能有点简单,后期也会优化各个界面;最后,通过这次设计我获得了很多经验,希望以后能有更多的机会去开发更多更好玩的游戏。

参考文献

[1]程彬彬,王明鑫,商楠.浅谈游戏开发平台Unity3D的应用与发展前景[J]. 通讯世界,2016(14):236.
[2]亚当斯.游戏设计基础[M].北京:机械工业出版社,2009.
[3]王欣.计算机游戏设计课程实训案例库建设研究[J].计算机教育,2016,(02):110-112. 
[4]吴亚峰 于复兴. Unity3D游戏开发技术详解与典型案例[M].北京:人民邮电出版社,2012. 
[5]李兰友 杨晓光.Visual C#.NET程序设计[M]. 北京:清华大学出版社,2004.5.
[6]中国音像与数字出版协会游戏出版工作委员.2019年中国游戏产业报告[R].2019.
[7]孙煦东. 游戏改变教育?[N]. 中国教师报,2015-03-04(003).
[8]曲鹏翔.游戏引擎在游戏开发中的应用分析[J].卫星电视与宽带多媒体,2019(23):16+18.
[9]马晓萍,刘静.基于Unity3D的坦克大战游戏设计与实现[J].数字技术与应用,2017(06):168+171.
[10]宣雨松.Unity3D游戏开发[M].北京:人民邮电出版社,2012.
[11]Lam Wing Man Wynne,Liu Xingyi. Does data portability facilitate entry?[J]. International Journal of Industrial Organization,2020,69©.
[12]Yucong Pan. Design and Development of Card Games Based on Unity 3D[C]. Institute of Management Science and Industrial Engineering.Proceedings of 2019 2nd International Conference on Mechanical Engineering,Industrial Materials and Industrial Electronics(MEIMIE 2019).Institute of Management Science and Industrial Engineering:计算机科学与电子技术国际学会(Computer Science and Electronic Technology International Society),2019:399-406.
[13]R. Andaru, B. K. Cahyono, G. Riyadi, et al. THE COMBINATION OF TERRESTRIAL LIDAR AND UAV PHOTOGRAMMETRY FOR INTERACTIVE ARCHITECTURAL HERITAGE VISUALIZATION USING UNITY 3D GAME ENGINE. 2019, XLII-2/W17:39-44.
[14]Xiaoling Shu. Design and Research of Virtual Experiment System for Network Attack and Defense Based on Unity3D[C]. Information Engineering Research Institute,USA、Asia Pacific Human-Computer Interaction Research Center,Hong Kong.Proceedings of 2018 4th International Conference on Mechatronic Systems and Materials Application(ICMSMA 2018).Information Engineering Research Institute,USA、Asia Pacific Human-Computer Interaction Research Center,Hong Kong:智能信息技术应用学会,2018:113-118.
[15]Mert Ozkaya. Are the UML modelling tools powerful enough for practitioners? A literature review. 2019, 13(5):338-354.
[16]王子.3D测试之游戏测试篇[J].大众硬件,2003(02):109-112.

致 谢

写到这里,已是坦克大战游戏的设计与实现的尾声了,一个系统的设计与实现不单单是自己一个人能够完成的,还需要他人的帮助,如指导老师、在校时的其他任课老师和同学等,所以,我非常感谢他们在我做这个游戏期间有形和无形的帮助,有些他们无形的帮助或许我感觉不到,但对我有着非凡的影响。在这里我需要特别感谢梁老师了,虽然之前他没有任职过我的任课老师,但最后作为我的指导老师却能很快的认识我们这班同学且随时随地能及时无误的帮我解决我所遇到的问题,可以说他是我做坦克大战游戏的设计与实现帮助最大的人了。最后,感谢广州大学松田学院为我们提供学习的平台,感谢广大松田计算机科学与技术各个科任老师的辛勤付出。
  • 30
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值