第4章 塔防游戏 本章将使用Unity完成一款塔防游戏。我们将在Unity内创建二维数组保存场景信息,自定义路点引导敌人行动,还将涉及摄像机控制,读取XML文件,自定义按钮等。 4.1 策划 移动平台上的塔防游戏已经多得数不胜数,笔者也曾经开发过一款叫作《野人大作战》的塔防游戏(英文名为Wild Defense)。塔防游戏的基本玩法比较类似,在场景中我方有一个基地,敌人从场景的另一侧出发,沿着相对固定的路线攻打基地。我方可以在地图上布置防守单位,攻击前来进攻的敌人,防止他们闯入基地。 本章我们也将制作一款塔防游戏,它将具备塔防游戏的最基本要素。 4.1.1 场景 塔防游戏的场景有些固定的模式,它由一个二维的单元格组成,每个格子的用途可能不同,通常是下列用途之一: (1)专用于摆放防守单位。 (2)无法摆放防守单位,也不允许敌人通过。 (3)专用于敌人通过。 4.1.2 摄像机 摄像机始终由上至下俯视游戏场景,按住鼠标左键并移动可以移动摄像机的位置。 4.1.3 胜负判定 我方基地有10点生命值,敌人攻入基地一次减少一点生命值,当生命值为零,游戏失败。 敌人以波数的形式向我方基地进攻,每波由若干个敌人组成。在这个实例中,一关有10波,当成功击退敌人10波的进攻则游戏胜利。 4.1.4 敌人 敌人有两种,一种是在陆地上行进的装甲车,另一种是飞行在空中的飞行器。每消灭一个敌人将获取一定点数,点数用于创建防守单位。 4.1.5 防守单位 通常塔防游戏会有多种类型的防守单位,但为了使本篇教程能尽可能简单,我们将只完成一种基本类型的防守单位,它是一个炮塔,一旦敌人进入它的攻击范围便会开火。 4.1.6 UI界面 游戏中的UI包括防守单位的按钮,敌人的进攻波数,基地的生命值和金钱数量。 当防守单位攻击敌人时,在敌人的头上需要显示一个生命条表示剩余的生命值。 当游戏失败或胜利后显示一个按钮重新游戏。