首先,我们仅有一个游戏场景。
-
一个摄像机Camera,设置为正交(Orthographic)投影(适用于2D游戏)
-
一个定向光源Directional Light
-
一个GameManager游戏物体,包含GameManager脚本,负责运行游戏
-
在关卡中跑来跑去的球Ball
-
短板Paddle,玩家用它来防止球触地
-
地板Floor,如果与球碰到,将减少玩家生命
-
侧边障碍物BoarderBlocks,用来将球保持在我们的关卡内
-
状态文本Status Text,用来显示文本信息
-
当然,还有方块,它们必须被球击中(在玩家控制下),被组织在四个方块行BlockRow中
游戏目的是让球击中关卡中所有的方块,则代表游戏胜利。如果球碰到地板超过一定的次数(我们称之为“生命”)则游戏失败。无论失败或者胜利都可以重新开始游戏。
现在,我们来分别讨论每个游戏对象的代码。以下所有的代码都是在Visual Studio中编辑。为了方便调试可以点下载Visual Studio tools forUnity。
LeftBlock、RightBlock和UpperBlock都是带2D Box Collider的quad,它们的物理材质是BouncyMaterial(摩擦力为0,弹力为1),这样每次球和它们碰撞的时候都不会有速度(或者更准确地说是能量)损失。这样,当球碰到这三个障碍物的时候,只是简单反弹。
BlockScript脚本有一个InitializeColor方法(用来为方块着色)以及一个CollisionExit2D方法用来增加分数,并在game manager里面从“活着的”方块里面减去1,然后设置这个方块为非活动。我们不使用Destroy方法是因为当玩家重新开始游戏(不论失败或胜利)的时候,我们又会将所有的方块重新激活。
它包含游戏中5种状态的名字。这5种状态是:开始Start, 游戏中Playing, 胜利Won, 失去一条生命LostALife 和 失去所有生命LostAllLives。构建游戏的时候,状态管理器是一种常见的实践,因为我们会根据游戏进行中状态作出不同的反应以及可能会有的玩家交互。
-
遍历所有的方块,把它们设置为active,并改变它们的颜色
-
重新设置生命数和分数
点此链接试玩完整版本:http://unitysamples.azurewebsites.net/BrickGame.html
您是unity新手吗?可以参考微软社区在线课程:MicrosoftVirtual Academy course,
原文链接:http://www.gamasutra.com/view/ne ... e_code_included.php
原文作者:Dimitris-Ilias Gkanatsios