帮助合理地设置良好游戏设计的层次(涉及SpaceManager物理,音乐和游戏逻辑)

| 我在创建自己的第一个iPhone游戏的过程中-我具有OOP的背景,尤其是C ++,因此我对如何在保持功能的同时逻辑设置图层方面存在一些疑问。 目前,我希望自己的游戏具有三个主要层次: HUDLayer(屏幕上的所有静态对象在此处-游戏控件,用户得分,暂停按钮等) PlayLayer(播放器,主游戏循环以及此处的所有游戏逻辑) 关卡层(玩家与之交互的关卡图像和关卡物理对象,以及特定于该关卡的背景音乐) 请注意,我在这里使用了WANT一词-因为在我的生命中,我一直不得不不断地移动逻辑对象,以便在看起来像Cocos2d和spacemanagers的结构中工作。 以下只是我面临的一些问题 我希望我的PlayLayer成为导演加载的场景-但是,如果这样做,所有HUDLayer对象都会被遮盖在PlayLayer后面,并且不要像应有的那样留在原处,因此HUDLayer是我的场景,而我不得不这样做只是为了使其工作 我想在LEVEL层中播放背景音乐(通过simpleAudioEngine playBackgroundMusic),因为我希望不同的级别具有不同的音乐。到目前为止,我可以使用背景音乐的唯一方法是将其放在最顶层,即HUDLayer 由于我必须使用SpaceManagerCocos2d对象的实例来创建物理物体,因此我的水平层似乎必须被杀死,并且只包含在我的PlayLayer中,否则我将面临一次噩梦,试图检测到物体之间的碰撞。玩家和等级。 我在这里错过了很明显的东西吗?对我只是不了解的层有核心了解吗?我越来越觉得我被框架推动着在单个类中构建整个游戏,而只是将图层用作场景。 还有其他人有这些问题吗?我处理游戏的架构是否错误?任何帮助将不胜感激。 在此先感谢大家!
已邀请:
好吧,每个游戏都不一样。在cocos2d论坛上,关于架构的讨论很多,有些人喜欢使用MVC方法,有些人喜欢使用ѭ0隐喻包含物理对象,等等。 这是我的方法: 使用两个
CCLayer
对象(GameLayer和HUDLayer)作为一个
CCScene
(GameScene)的子节点。这些是“视图”对象。 创建一个可以更改游戏状态的“ 3”单例(也可以存储在GameController或单独的文件中。)您还可以将CCScene子类化并调用该控制器。 “ 4”负责渲染游戏关卡及其中所有角色的图形;它还可以处理通过触摸事件获取游戏输入的情况。
HUDLayer
放置在比GameLayer高的z-index上,并且显然具有HUD和按钮的所有CCSprite对象。
HUDLayer
和ѭ4之间的互动是通过GameController管理的。
GameController
执行所有状态更改和游戏操作。 那只是我的方法,因为它适用于我当前的游戏,而绝不是绝对的答案。 我建议您考虑对物理对象使用“ 0”范式-SpaceManager做得不错,但是您不一定总是希望物理对象扩展CCSprite。

要回复问题请先登录注册