本來想出一個完整的開發筆記,因爲個人原因,代碼已經OK了,博客的話就不貼代碼了,直接講解一下整個遊戲的設計,更確切的說是新手開發時應該注意的地方。
1.角色類正確的繼承和擴展----擴展閱讀(MVC)。
我們要封裝一個角色類,第一印象就是封裝一個繼承自sprite的精靈,裏面封裝好瑪麗的動作和角色屬性等。繼承自sprite是可行的,我們只要重寫幾個static create函數,然後把這個精靈貼到層上即可。
仔細考慮一下,如果角色要再添加一個特效跟隨呢,角色吃到道具出現幻影分身呢?一系列的BT需求會發現繼承自sprite其實很雞肋,會導致代碼很臃腫,這不是我們繼承的本意。所以我們要採用繼承自node來創建角色(當然,也可以繼承自layer,他們兩個的實現應該是一樣的,區別在於觸摸時間的響應,我木有用過,^_^),我們可以在node裏添加我們想要的cocos2dx的對象來完善角色類。
補:今天看子龍山人的blog引用一下
這個MVC模式和遊戲實體組件系統差不多,我在這篇文章裏面就有介紹過了。對於這兩個系統來說,它的思想都是統一的,那就是不要繼承CCSprite並把遊戲logic全部塞到sprite裏面去。CCSprite應該只負責渲染顯示。而且有時候,你可能需要創建很多sprite,我們最好是創建一個CCNode類,然後裏面聚合許多sprites。這樣CCNode成爲了Controller,控制view。當view(比如sprite,effect,gL
drawings等等)在屏幕上面移動的時候,controller結點會輪詢所有它包含的結點來查詢一些遊戲相關的狀態信息,並且做一些遊戲邏輯,然後反過來再更新view。
參考地址:點我!
子龍山人原blog:點我!
2.主場景層、遊戲層、控制層、展示層、地圖層、角色層的關係。
(原諒我不會畫圖)
首先在寫代碼之前,我們應該明確整個地圖層的關係,不要把所有的東西添加到同一個層中來控制。
主場景層是遊戲中最大的一個層,它包含了整個場景中其他的所有節點。
控制層:虛擬遙感所在的層
遊戲層:我們所看到的地圖和人物所在的層
展示層:一些分數血量等靜態的東西。
這麼做的好處在後期代碼的編寫中是顯而易見的,特別是對於精靈position的控制,我們不需要使用過多的座標轉換來移動一些角色和地圖。