2011-03-25 71 views
1

我正在創建我的第一個iPhone遊戲 - 我有背景的OOP和特別是C++,所以我有一些問題關心如何在保持功能的同時在邏輯上設置圖層的最佳方式。幫助邏輯設置良好的遊戲設計圖層(涉及SpaceManager物理,音樂和遊戲邏輯)

目前,我要爲我的遊戲主要有三個層次:

  • HUDLayer(屏幕上的所有靜態對象的位置 - 遊戲控制,用戶評分,暫停按鈕等)
  • PlayLayer(該播放器,遊戲主循環和所有的遊戲邏輯在這裏)
  • 級層(級圖像和水平物理對象,玩家與之交互,和具體的背景音樂到這個水平)

注意我在這裏使用了WANT這個詞 - 因爲在我的生活中,我經常需要移動邏輯對象才能在Cocos2d和Spacemanagers結構中工作。

下面只是一些的問題,我現在面臨

  • 我想爲我的PlayLayer是現場多數民衆贊成由導演加載 - 但如果我這樣做,那麼所有的HUDLayer對象得到覆蓋在PlayLayer後面,並且不會像他們應該呆在原地,因此HUDLayer是我的場景,我必須這樣做才能使其工作
  • 我想播放背景音樂(通過simpleAudioEngine playBackgroundMusic) LEVEL層,因爲我想要不同的級別有不同的音樂。到目前爲止,我已經獲得背景音樂的唯一方法是使其處於最頂層,即在這種情況下,HUDLayer
  • 由於我必須使用SpaceManagerCocos2d對象的實例來創建物理實體 - 看起來我的關卡層必須被殺死,並且只能在我的PlayLayer中進行合併,否則我有一段時間的噩夢試圖檢測玩家與關卡之間的衝突。

我在這裏丟失了一些非常明顯的東西嗎?有沒有對圖層的核心理解,我只是沒有得到?越來越多的我覺得我正在被框架推動來在單個課堂中構建整個遊戲,並將圖層用作場景。

是否有其他人有這些問題?我接近遊戲的架構錯了嗎?任何幫助真的會被讚賞。

在此先感謝你們!

回答

4

那麼,每個遊戲是不同的。有關於architecture的cocos2d的論壇上很多好的discussions,有些人更喜歡使用MVC方法,有的喜歡用Actor比喻包含物理對象等

這裏是我的方法:

  1. 使用兩CCLayer對象(GameLayer和HUDLayer)作爲一個CCScene(GameScene)的子節點。這些是「視圖」對象。
  2. 創建一個GameController singleton,可以更改遊戲狀態(也存儲在GameController中,也可以存儲在單獨的文件中)。您也可以繼承CCScene並調用您的控制器。
  3. GameLayer負責渲染遊戲關卡的圖形及其中的所有演員;它還處理通過觸摸事件獲取遊戲輸入。
  4. HUDLayer放置在比GameLayer更高的Z-index處,並且明顯具有用於HUD和按鈕的所有CCSprite對象。
  5. HUDLayerGameLayer之間的互動通過GameController進行管理。
  6. GameController做所有的狀態改變和遊戲動作。

這只是我的方法,因爲它適用於我當前的遊戲,它決不是確切的答案。

我建議你看看你的物理對象使用Actor paradigm-SpaceManager做了一個體面的工作,但你不一定總是希望物理對象擴展CCSprite。