Cocos2d iphone 帮助逻辑地设置好游戏设计的层(包括SpaceManager物理、音乐和游戏逻辑) 我在创建我的第一个iPhone游戏的过程中——我有一个OOP的背景,特别是C++,所以我在如何保持逻辑的层次上最好地设置一些问题。

Cocos2d iphone 帮助逻辑地设置好游戏设计的层(包括SpaceManager物理、音乐和游戏逻辑) 我在创建我的第一个iPhone游戏的过程中——我有一个OOP的背景,特别是C++,所以我在如何保持逻辑的层次上最好地设置一些问题。,cocos2d-iphone,chipmunk,layer,Cocos2d Iphone,Chipmunk,Layer,目前,我希望我的游戏有三个主要层: HUDLayer(屏幕上的所有静态对象都在这里-游戏控件、用户分数、暂停按钮等) PlayLayer(玩家、主游戏循环和所有游戏逻辑) 关卡层(与播放器交互的关卡图像和关卡物理对象,以及特定于该关卡的背景音乐) 请注意,我在这里使用了“需要”这个词,因为在我的一生中,我必须不断地移动逻辑对象,以便在Cocos2d和spacemanagers结构中工作 下面是我面临的一些问题 我希望我的PlayLayer成为导演加载的场景,但是如果我这样做,那么所有的HU

目前,我希望我的游戏有三个主要层:

  • HUDLayer(屏幕上的所有静态对象都在这里-游戏控件、用户分数、暂停按钮等)
  • PlayLayer(玩家、主游戏循环和所有游戏逻辑)
  • 关卡层(与播放器交互的关卡图像和关卡物理对象,以及特定于该关卡的背景音乐)
请注意,我在这里使用了“需要”这个词,因为在我的一生中,我必须不断地移动逻辑对象,以便在Cocos2d和spacemanagers结构中工作

下面是我面临的一些问题

  • 我希望我的PlayLayer成为导演加载的场景,但是如果我这样做,那么所有的HUDLayer对象都会隐藏在PlayLayer后面,并且不会像他们应该呆在的地方,因此HUDLayer是我的场景,我必须这样做只是为了让它工作
  • 我想在关卡层播放背景音乐(通过simpleAudioEngine playBackgroundMusic),因为我希望不同关卡有不同的音乐。到目前为止,我唯一能让背景音乐发挥作用的方法就是把它放在最上面的一层,也就是说,在这个例子中是HUD层
  • 因为我必须使用SpaceManagerCoCoCS2D对象的一个实例来创建物理实体——似乎我的关卡层必须被删除,并合并到我的PlayLayer中,否则我会有一个噩梦,那就是试图检测玩家和关卡之间的碰撞
我是不是错过了一些很明显的东西?是否有一个核心层的理解,我只是没有得到?我越来越觉得我被这个框架所推动,在一个类中构建整个游戏,只是把层用作场景

还有其他人有这些问题吗?我对游戏架构的理解是错误的吗?任何帮助都将不胜感激


提前谢谢各位

每个游戏都不一样。cocos2d论坛上有很多关于的好东西,有些人喜欢使用MVC方法,有些人喜欢使用
Actor
隐喻来包含物理对象,等等

以下是我的方法:

  • 使用两个
    CCLayer
    对象(游戏层和HUDLayer)作为一个
    CCScene
    (游戏场景)的子节点。这些是“视图”对象
  • 创建一个
    GameController
    singleton,可以对游戏状态进行更改(也存储在GameController中,或存储在单独的文件中)。您还可以将CCScene子类化并调用该控制器
  • GameLayer
    负责渲染游戏级别和其中所有参与者的图形;它还处理通过触摸事件获取游戏输入
  • HUDLayer
    被放置在比游戏层更高的z索引上,并且显然拥有所有用于HUD和按钮的CCSprite对象
  • HUDLayer
    GameLayer
    之间的交互通过GameController进行管理
  • GameController
    执行所有状态更改和游戏操作
  • 这只是我的方法,因为它适用于我目前的游戏,而且它绝不是最终的答案


    我建议您考虑使用一个用于物理对象的应用程序——SpaceManager做得不错,但您不一定总是希望物理对象扩展CCSprite。

    嗯,每个游戏都是不同的。cocos2d论坛上有很多关于的好东西,有些人喜欢使用MVC方法,有些人喜欢使用
    Actor
    隐喻来包含物理对象,等等

    以下是我的方法:

  • 使用两个
    CCLayer
    对象(游戏层和HUDLayer)作为一个
    CCScene
    (游戏场景)的子节点。这些是“视图”对象
  • 创建一个
    GameController
    singleton,可以对游戏状态进行更改(也存储在GameController中,或存储在单独的文件中)。您还可以将CCScene子类化并调用该控制器
  • GameLayer
    负责渲染游戏级别和其中所有参与者的图形;它还处理通过触摸事件获取游戏输入
  • HUDLayer
    被放置在比游戏层更高的z索引上,并且显然拥有所有用于HUD和按钮的CCSprite对象
  • HUDLayer
    GameLayer
    之间的交互通过GameController进行管理
  • GameController
    执行所有状态更改和游戏操作
  • 这只是我的方法,因为它适用于我目前的游戏,而且它绝不是最终的答案

    我建议您考虑在物理对象中使用一个,SpaceManager做得不错,但您不一定总是希望物理对象扩展CCSprite