在Cocos2d-x中開發遊戲的主要邏輯和結構是:先創建場景,在場景上添加一層或多層,然後可以在指定層上添加精靈、菜單、文字等,可以爲精靈、文字執行某個動作(或者移動),檢測玩家觸屏事件,開啓任務調度執行碰撞檢測和更新數據,通過導演類管理和切換場景等等。
(1)導演(CCDirector)
在cocos2d-x引擎中,導演類CCDirector是個單例,這裏主要用來管理和顯示場景的,還提供一些常用的屬性,如獲取窗口的寬高等。
導演類是遊戲的組織者和領導者,導演制定規則讓遊戲內的場景,佈景,和人物角色有序的運行
(2)攝像機(CCCamera)
每個節點都需要使用攝像機,當節點發生縮放,旋轉,和位置變化時,都需要覆蓋攝像機,讓這個節點通過攝像機重新渲染。
(3)場景(CCScene)
就是遊戲的關卡,關卡有人物和背景構成,也可以表示一個界面。你可以只創建一個場景也可以創建多個場景。它是構成遊戲的畫面,一般是先繪製一個場景,然後在場景中疊加或組合一個或者多個層。
(4)層(CCLayer)
我們的遊戲內容一般是顯示在層上的,通過疊加多個層來實現不同的效果。可以設置層的疊加順序,處理事件響應機制。cocos2d-x提供了一些公用層:菜單層,顏色層等。每一層可以包含各式各樣的內容要素:文本、精靈、地圖等。
(5)精靈(CCSprite)
精靈是整個遊戲中的核心對象,如:敵機、英雄、子彈等,精靈就是一些可以不斷變化的圖片,而所謂遊戲,就是玩家操作一個或多個精靈與其他玩家或者系統控制的精靈進行互動。
(6)動作(CCAction)
就是精靈擁有的動作,如:子彈移動、飛機飛行等。
(7)任務調度機制
通常在遊戲中需要實現一個計時器,以指定的時間間隔不停的調用某個指定的回調函數,來改變屏幕的顯示或者進行數據處理。cocos2d-x提供了內置的任務調度機制,即CCNode的schedule成員函數。如:
this->schedule(schedule_selector(GameScene::update), 1.0f);
每隔1秒執行一次update函數,如果不指定時間則每一幀執行一次。我們來看看cocos2d-x的組織架構圖
上圖截取自Cocos2dx遊戲開發一書的圖,很形象有木有,我們可以大概知道Cocos2dx是設計遊戲是一個怎樣的模式
同樣上圖則是cocos2dx的實現模式