Unity第五次作业
一、编写一个简单的鼠标打飞碟的游戏
-
游戏要求内容:
- 游戏有n个round,每个round都包括10次trial
- 每个trial的飞碟的色彩、大小、发射位置、速度、角度、同时出现的个数都可以由round的ruler控制;
- 每个trial的飞碟有随机性,总体难度随round上升;
- 鼠标点中了得分,得分规则按照色彩,大小,速度不同计算,规则可以自由设定。
-
游戏的要求
- 使用带缓存的工厂模式管理不同飞碟的生产和回收,该工厂必须是场景单实例 的!
- 尽可能使用前面MVC结构实现人机交互与游戏模型分离
项目地址:https://github.com/buzhanpeng/homework_5.git
1、界面及其运行
(1)开始界面,点击Start按钮即可开始游戏
(2)点击start后,进入到游戏界面,左上角记录的是分数,中间记录的是现在的游戏等级,每个飞碟对应一定的分数,目前的设置是:
红色飞碟 3分、绿色飞碟 2分、蓝色飞碟 1分。
其中游戏难度和游戏等级相关,游戏等级越高,游戏难度也就越大,难度大体现在随机出现的飞碟数量更多,速度也更快
(3)当通关第五关后,便会弹出游戏结束的字样
2、代码及其解析
** 一共分为三个大类**
① Actions动作与动作管理器
② Controllers 控制器
③ Viewers 用户接口与用户GUI
让我们来挑具有代表性的进行讲解
(1)飞碟动作
在Update的这个函数里面有两个调用和控制机制。个是当检测到鼠标点击,飞碟就会销毁,还有就是当飞碟飞出屏幕之外也会被销毁。
(2)SSActionManager 动作管理类基类
新增了一个函数RemainActionCount(),用于判断每回合中剩余的动作数量(即飞碟数量),只有这个值为0才进入下一回合。
逻辑是,先将所有的飞碟对象加入到waitingADD的列表中,然后检测是否被销毁,销毁了就加入到waitingDelete的列表中。以此来控制难度等级是否要进阶。
(3) DiskFactory 飞碟生成器
用于生产飞碟。GetDisk(int round)被主控制器调用,round(回合数)会影响所生产的飞碟的速度、大小等属性。
有两个列表used和free,存放的是飞碟属性(包括分数、速度),可以循环使用,提高飞碟的产生效率。
飞碟初始位置随机,可能为屏幕的四个角落之一。
根据飞碟的分数和回合数设置飞碟的大小和速度。
同学们可以通过这个函数里面,来操作飞碟飞出的位置,速度,飞碟的颜色等等。
(4)UserGUI 用户界面
可以在这里设置自己喜欢的UI界面