标签:决定 orm cto cal 注意事项 and push 计时 规则
Priests and Devils是一款益智类的小游戏,需要在规定的时间内帮助牧师和魔鬼都安全过河。河边有三个魔鬼和三个牧师,他们都想过河,但河上只有一条船,这艘船每次只能搭载两个,而且必须有一个人驾驶船行驶。如果河一边的魔鬼数量多于牧师,牧师将被魔鬼击杀,游戏结束。游戏链接:http://www.flash-game.net/game/2535/priests-and-devils.html
游戏成品图
设置60s倒计时——60s后如果未能安全运送所有魔鬼与牧师,游戏失败。
尝试改进界面,对一些东西还不太熟悉。
1列出游戏中提及的事物(Objects)
Object:三个魔鬼(用白cube表示)、三个牧师(用黑sphere表示)、一艘船、两个岸
2游戏架构:
ISceneController.cs和IUserAction.cs是接口类, ISceneController.cs定义场景控制方法,而FirstController.cs是控制一个场景的具体场景实现,实现的函数定义在ISceneController.cs之中,而场景管理器不知道具体实现方法,具体实现由导演(SSDirector)决定。只有场景设置可见,保证了内部核心代码的安全性。IUserAction.cs定义用户交互方法,UserGUI.cs实现对应方法。MVC,达到模式,视图,控制分离。
例如:
1.接收到用户点击事件(UserGUI.cs)
2.调用用户接口函数(函数在IUserAction.cs中)
3.转到函数实现——转到场景控制器FirstController.cs
4.请求具体方法实现——转到导演SSDirector.cs——控制
2.3在 GenGameObjects 中创建 长方形、正方形、球 及其色彩代表游戏中的对象。
游戏中用白正方形表示魔鬼,黑球代表牧师,长方体代表船以及两岸。
2.4用表格列出玩家动作表(规则表),注意,动作越少越好
与规则表对应的动作函数表:
行为大致可以分为三种,上船、开船和下船。开船有限制条件,必须要有一个牧师或一个魔鬼船方可开动。
1.上船
分为两种对象——牧师和魔鬼。上船这个动作可以把牧师或者魔鬼作为船的子对象,在船中还有空位的时候就可以加进设置子对象的代码。为区分是魔鬼或者牧师,在预设的时候添加对应的Tag。牧师为Priest,魔鬼为Devil
void AboardTheBoat(GameObject obj) { if (_instance.BCapacity() != 0) { obj.transform.parent = _instance.boat_obj.transform; if (_instance.boat[0] == null) { _instance.boat[0] = obj; obj.transform.localPosition = new Vector3(0, 1.2f, -0.3f); } else { _instance.boat[1] = obj; obj.transform.localPosition = new Vector3(0, 1.2f, 0.3f); } } }
2.开船
船上必须有一个牧师或者一个魔鬼,将船从一岸到另一个岸边。
3.下船
不分对象,但分从船左船右下船,解除子对象绑定,再移动对应对象的位置。
public void getOffTheBoat(int side) { if (_instance.boat[side] != null) { _instance.boat[side].transform.parent = null; if (_instance.state == State.BEND) { if (_instance.boat[side].tag == "Priest") { _instance.priestsEnd.Push(boat[side]); } else if (_instance.boat[side].tag == "Devil") { _instance.devilsEnd.Push(boat[side]); } } else if (_instance.state == State.BSTART) { if (_instance.boat[side].tag == "Priest") { _instance.priestsStart.Push(boat[side]); } else if (_instance.boat[side].tag == "Devil") { _instance.devilsStart.Push(boat[side]); } } _instance.boat[side] = null; } }
关于代码,将FirstContorller.cs挂载到空对象,将UserGUI.cs挂载到主摄像机即可运行
2.5修改代码,使用 C# 集合类型 有效组织对象,通过 xxSceneController 对象 GenGameObjects 互动完成游戏逻辑。(这一点要求不同,现在改用课件框架。)如需要游戏对象代码,可以动态绑定。
2.6注意事项:
1.整个游戏仅主摄像机和一个 Empty对象,其他对象必须代码动态生成!!!。
使用预制动态生成对象。(未包含界面改进后的对象)
2.整个游戏不许出现 Find 游戏对象, SendMessage 这类突破程序结构的 通讯耦合 语句。 违背本条准则,不给分
3.注意细节,例如:船未靠岸,牧师与魔鬼上下船运动中,均不能接受用户事件!
大致代码逻辑参考师兄博客。
标签:决定 orm cto cal 注意事项 and push 计时 规则
原文地址:http://www.cnblogs.com/xieyuanzhen-Feather/p/6538713.html