
2.1 游戏功能分析
首先运行太空射击游戏项目,了解太空射击游戏项目是一个什么样的游戏;然后对太空射击游戏项目进行功能分析,对该游戏项目有一个比较深入的了解,以便后面逐步实现这个基于2D的射击类游戏。
2.1.1 运行游戏
在光盘中找到游戏项目——2.太空射击游戏项目——SpaceShoot,运行游戏,选择800×600的分辨率,打开如图2-1所示的开始场景界面。

图2-1 开始场景界面
在开始界面中,单击任何键,进入到游戏场景,如图2-2所示。

图2-2 游戏场景界面
在上述游戏场景界面中,左、右键可以左右移动飞机,单击空格键,可以发射炮弹。炮弹每击中陨石一次,就会增加100分,并显示爆炸场景。
图2-3所示是飞机炮弹击中陨石的爆炸界面。

图2-3 炮弹击中陨石场景界面
在游戏场景界面中,陨石每砸中一次飞机,飞机的生命值减1,并出现爆炸场景,图2-4所示是陨石砸中飞机的爆炸界面。

图2-4 陨石砸中飞机场景界面
如果飞机生命值一直大于0,当倒计时为0的时候,游戏界面将会转到赢家场景,如图2-5所示。

图2-5 赢家场景界面
在赢家场景图2-5中,单击任意键,又将进入如图2-2所示的游戏场景。
如果飞机的生命值等于0,则游戏界面将会转到输家场景,如图2-6所示。在输家场景图2-6中,单击任意键,此时就会再次进入如图2-2所示的游戏场景。

图2-6 输家场景界面
2.1.2 游戏功能分析
通过运行上述太空射击游戏,可以看到:整个游戏可以划分为四个游戏场景,它们分别是游戏开始场景、游戏场景、输家场景和赢家场景。
这些场景的逻辑关系如图2-7所示。

图2-7 四个游戏场之间的关系
在图2-7中,游戏开始场景是游戏运行的开始界面,在游戏开始场景中单击任意键,进入游戏场景,而游戏场景则是游戏的主界面。
在游戏场景中,如果飞机的生命值等于0,则游戏进入输家场景;如果游戏到倒计时等于0,则游戏进入赢家场景。在输家场景或者在赢家场景中,单击任意键,重新进入游戏场景。
在游戏场景中,主要有三个游戏对象,分别是飞机、陨石和飞机发射的炮弹。当飞机发射的炮弹击中陨石时,会出现爆炸效果;当陨石砸中飞机时,也会出现爆炸效果,因此还有两个爆炸效果对象。为实现游戏的可玩性,还需要显示分数、飞机的生命值和最高计分,并且显示游戏的倒计时。
完成该游戏后,游戏项目的目录结构如图2-8所示。其中Image目录存放各个游戏对象所对应的的图片;sound目录存放各种声音文件,如发射炮弹的声音、爆炸声等。四个游戏场景则位于根目录之中。

图2-8 游戏项目的目录结构
图2-9则显示了prefabs目录中的相关预制件对象,如显示2D图片的sprite预制件、炮弹预制件projectile等。

图2-9 prefabs目录
对于C#开发者来说,图2-10显示了需要开发者开发的C#文件,共有9个文件;对于JavaScript开发者来说,图2-11则显示了需要开发者开发的JavaScipt文件,共有9个文件。

图2-10 C#文件

图2-11 JavaScript文件
这些开发文件的具体功能说明见表2-1。
表2-1 开发文件的功能说明
