導航:首頁 > 源碼編譯 > cocos2dx引擎源碼視頻

cocos2dx引擎源碼視頻

發布時間:2022-12-07 05:53:08

⑴ 網上下了一個cocos2dx的項目,在打開的時候提示如下圖片,請問怎麼解決

這個就是沒有找到你的項目依賴。也就是說你下載的這個項目不包含引擎部分。
你重建個cocos2dx項目,把源碼和資源托過去就好了。或者自己添加項目依賴。

⑵ UNITY3D、Unreal、Cocos2DX...介紹「游戲引擎」江湖的幾個大玩家 比特魔方原創

作者 | 第二個區塊

出品 | 比特魔方

Cocos-BCX被大家寄予厚望,不能排除Cocos2DX這個因素。Cocos2DX可能很多區塊鏈行業的朋友還不了解。這是手游領域的三大引擎之一。

引擎,大家可以簡單理解為開發游戲所用的工具箱。

本文將會介紹其中的幾個大玩家,盡量中立的說一下優缺點。這樣一來方便感興趣的讀者了解游戲引擎這個領域,二來方便對日後的游戲江湖做出獨立判斷。

【 1 】UNITY 3D

Unity是目前3D手游領域使用量最多的引擎。它的開發商是Unity Technologies。在去年年中,Unity中國區在3D手機游戲市場的佔有率達到了75%。在全球,佔有率也到達了45%。實際上,在2019年之前,Unity曾經擁有過更高的市場佔有率。

Unity的優點是體量小,上手容易。

行業里經常有聲音說Unity在效果上輸Unreal。我的觀點是:不是所有游戲都以物理效果取勝,即使是3D游戲。而且,從幾年前就發布的官方宣傳片《亞當》的質量來看,Unity的潛力遠大於多數開發者的操作能力。

有一個現實情況需要情形的意識到,從多年前Unreal3的時代開始,就有不少從業者認為Unity要走入黃昏了。然而這個判斷至今沒有發生。Unity的開發者數量優勢和成本優勢不容小覷。

視頻簡介 / 編者註:這個是一個合集鏈接,大概20分鍾左右,非常好看。讓魔小妹想起了《沙丘》。這個短片講述的是人被迫變成機器人之後的悲慘命運。主人公亞當意外被人搭救,踏上逃亡之路,找尋自我。

【 2 】Unreal

Unreal是Epic Games開發的一款游戲引擎,是在手游領域市場佔有率僅次於Unity的引擎。

雖然在市場佔有率上落後,但是在了利潤上,被推崇的程度上,Unreal強於Unity。

大家之所以推崇Unreal,是因為看好未來的手游競爭會越來越往重度的、精品的路線上走。Unreal可以創造更加生動的光影效果。

在前段時間剛剛發布的Unreal5演示中,即時渲染的、有 3000萬面 的道具讓人嘆為觀止。一時間,游戲和影視業界很多人驚呼變革以來。

幾年前《古墓麗影10》中勞拉十萬面的臉部模型是可以拿來吹噓的。而新公開的Unreal5視頻中,有3000萬面的道具在一個場景中放了500個。

任何事情都有它的反面。相比Unity,Unreal也有自己的劣勢。比如目前的游戲教學、培訓,更多還是使用Unity。這讓本來就更好上手的Unity擁有更多的開發者生態。

再加上,手游市場畢竟有很多偏輕度的產品。這些產品的預算未必支撐得起Unreal開發,卻可能很適合Unity。

【 3 】Cocos2DX

Cocos2DX是一款2D游戲開發引擎,是市場中總體使用率最高的引擎,在2D引擎領域處於明顯的領先地位,目前注冊開發者已經超過140萬。

相較於Unity和Unreal,Cocos2DX的技術積累沒那麼多,再加上是國人團隊開發,因此被一些人輕看一眼。

實際情況是:Unity面對Unreal的比較優勢,在Cocos2DX面對Unity和Unreal競爭的時候也一樣生效。永遠別小看開發者數量和成本優勢對商業活動的吸引力。

從多年之前,人們就說2D已死。但時至今日,由於微信小游戲爆發,我們看到Cocos2DX並沒有失去自己的陣地。再考慮到Unity和Unreal相較於Cocos2DX都有十年二十年的開發積累優勢,我認為Cocos2DX還是值得被重視的。

換個角度想,國內在底層工具開發上比較薄弱,也不只是游戲引擎這一個案例。這是一種普遍情況。要改變這個情況,可能需要我們的市場、資本、觀念、制度都往前走才行。

不得不提一句Cocos-BCX,是Cocos2DX的區塊鏈兄弟項目。同樣作為底層工具,在游戲公鏈這個賽道,至少國內團隊沒有落後。一旦區塊鏈和代幣在國內能被更多人可,Cocos2DX的積累將有機會直接助力Cocos-BCX。

【 4 】更多引擎

除了上邊介紹的三款最被廣泛運用的第三方引擎,很多游戲大廠也會自研或深度定製自己的引擎。

比如為《巫師》系列量身打造的 RED Engine 。

如果RED Engine能再次幫助《賽博朋克2077》獲得成功,它將會成為CD Projekt真正的核心資產。

比如 Frostbite Engine(寒霜引擎) ,其優秀的物理碰撞處理能力讓他孕育出了《戰地》系列、《極品飛車》系列等大作。

游戲引擎是可以決定游戲開發流程和質量的重要工具,所以很多大廠會將其視作核心競爭力抓在自己手裡。

這一點在更加成熟的主機游戲市場體現的更明顯。照著這個邏輯來看,引擎這個賽道還將會容納多個玩家。倒是在游戲引擎之外,很多特效軟體會受到降維打擊。

以上。

ps. 如果有興趣,不妨去查查你喜歡的游戲是藉助哪些引擎開發的O(∩_∩)O~

⑶ 自學cocos2d js游戲開發應該按什麼步驟進行

跟你簡要說一下我的自學路,以免你走彎路

背景:
有工作,而且很忙;在不影響工作基礎上用業余時間鼓搗(經常會因為工作耽擱學習進度);基本沒技術背景(初中qbasic、高中pascal半吊子),大學文科,工作也不是搞代碼。因此我感覺我的自學路跟你還是挺契合的。

1
兩年前的一天,決定要做獨立游戲製作人。選定引擎cocos2d,開始學習objective-c語言;(如果你打算只在iOS平台開發可以學obj-c配合cocos2d或者sprite kit;如果打算跨平台就要用cocos2d-x和c++了;當然unity什麼的也不錯但是我還沒嘗試過,一直很嚮往)

2
我跳過了iOS程序開發(似懂非懂看完了斯坦福那一系列的教學視頻),結合當時情況直接選擇了cocos2d引擎,這時開始接觸 @吳一刀 推薦的博客;我主要看的是子龍山人<子龍山人 - 博客園>、Ray Wenderlich<Ray Wenderlich>、Himi<黑米GameDev街區>這些博客里最基本的例子,知易那個以我當時的水平還看不懂。

3
嘗試開始設計自己的簡單游戲,我做打地鼠!當然比教學例子里的打地鼠復雜多了

4
這個過程中發現自己懂的實在是不夠,所以又開啃這本書:Learn cocos2d 2 by Steffen Itterheim & Andreas Low

5
慢慢的發現需要一些趁手的工具和編輯器,並發展出一套自己構建於cocos2d之上的游戲設計架構。我目前的情況是這樣:

關卡編輯我使用plist文件配合自己寫的類;

sprite sheet使用TexturePacker<TexturePacker>;

動畫/UI編輯最初自己手寫太累,後來選擇了cocosbuilder,請注意現在這個軟體已經停止維護,轉而引導用戶使用SpriteBuilder<SpriteBuilder>(域名都做了自動跳轉;SpriteBuilder我木有研究過,建議你研究一下)。

粒子編輯我自己還沒實際用到,如果真正需要我感覺cocosbuilder的夠我用的。//更新:後來用到了ParticleDesigner和cocosbuilder兩個軟體的粒子編輯混搭

我當時遇到的一個大麻煩是如何讓cocosbuilder、cocos2d版本互相兼容且cocosbuilder無問題。大概情況是這樣:cocosbuilder2.1和cocos2d-iphone2.0及2.1版本都不協調怎麼辦?;What version of Cocosbuilder and Cocos2d-iphone should I choose?

目前我使用的cocosbuilder 2.1版本(漸變層有bug、並且很可惜動畫播放完沒有觸發消息的機制,我只好把每個動畫時長都手動記錄一下自己處理)

======3月12日更新======
在 @GarfieldKwong 指點下發現這個版本動畫播放完是可以觸發消息機制的,更高級版本3.x支持的效果應該是在動畫中就加入callback的關鍵幀
新技能get√

具體代碼可見下面學習案例的第一個例子里Explosion部分
=====================

cocosbuider的學習可以看兩個例子Creating a Game with CocosBuilder;Introction to CocosBuilder;然後就是多用多嘗試。

6
整個學習過程要學會查資料、學會尋求幫助,我主要用的stackoverflow(話說剛剛發現stackoverflow的reputation喜過15,終於可以投票了:)

在學習過程中得到了子龍山人(我認為本尊是這位 @屈光輝 )、LearnCocos2d作者Steffen、 @kubisoft 以及眾多網上朋友的幫助,再次表示感謝。

7
硬體及開發者資格:看完c++開始看obj-c,這個過程一直是使用的vmware虛擬機安裝的mac系統寫程序;然後入手一個最便宜的mac pro、以及iPhone,嘗試玩各種游戲;從看c++開始大約過了1年半(已經有非常簡陋的游戲demo)才真正購入iOS開發者資格並開始真機測試。

8
嘗試過的一些其他工具、各種彎路和坑、以及發散內容:
可以拖拽方式寫代碼的stencyl <Stencyl: Make iPhone, iPad, Android & Flash Games without code>;
最初學的不是ojc-c而是譚浩強老師的c++程序設計(雖然有人不喜譚老師,但那書是中文的讓我對面對對象程序設計有一些初步的概念,再看英文的obj-c不至於太摸不著頭腦,反正手頭正好有這么一本買了6年沒看的c++。。。);
嘗試過<Tiled Map Editor>但自己目前的坑沒有用到;
嘗試過一點物理引擎和粒子,但自己目前的坑沒有用到;現在粒子用到了,做了火焰等效果,也挺美的;但是一定要注意CPU佔用優化,內存方面我最低支持4S沒遇到大問題

學習音樂製作,這個我小時候學琴一直也喜歡音樂所以有一點點底子,如果沒有基礎可能上手有門檻;開始用的軟體LMMS,但是音源插件在64位系統的問題我一直沒解決掉時間精力也不多,所以是暫時停滯了;最近發現Garage Band可能也可以寫歌;另外還試過一個很有歷史的微軟的音樂自動編輯器,很好玩,用來做背景音樂也不錯。

入手手繪板學畫畫(這中間糾結了好久才決定用點陣圖不用矢量圖),如果你能找到熱愛游戲的美術同學一起搞那最好不過。但是我一直對畫畫心癢難搔。。。所以入了這個深坑,曬一曬:
轉載
z

⑷ Cocos Creator 引擎源碼調試、修改

Cocos Creator 的引擎部分包括 javaScript 、 Cocos2d-x-lite 和 adapter 三個部分,各部分對應源碼在(Mac 版):

JavaScript:CocosCreator.app/Resource/engine(JS 引擎)
Cocos2d-x-lite:CocosCreator.app/Resource/cocos2d-x(Cococ2d-x 引擎)
adapter:CocosCreator.app/Resource/builtin/

⑸ 求cocos2d-x教程

cocos教程網路網盤免費資源在線學習

鏈接: https://pan..com/s/1lYZHKPPVuvBR4rddE1jasA

提取碼: e2ht

cocos教程 極客學院Cocos2d-x源碼 05_第5階段 項目實戰 04_第4階段 功能擴展 03_第3階段 常用功能 02_第2階段 基礎知識 01_第1階段 環境搭建 5 使用Eclipse在Ubuntu下搭建Cocos2d-x 3集成開發環境 4 Cocos Code IDE使用 3 Windows環境下Visual Studio 2013中搭建Cocos2d-x 3.1集成開發環境 2 Cocos2d-x3.1rc0項目創建及新功能介紹 1 WinMac環境Cocos2d-x開發環境搭建 06. HelloWorld示例詳解.webm 05. 在Mac平台編譯成Android程序.webm 04. Mac平台開發環境搭建.webm


⑹ cocos2dx 3.10 事件機制

cocos2dx的事件機制里存在三類: Event、EventListener、EventDispatcher
先理解一下它們之間的關系
當我們按下按鈕時(Event),會觸發一個特定的事件(EventListener相當於回調函數),而這個特定的事件又存儲在EventDispatcher里,可能按下這個按鈕會觸發多個事件,而事件的先後就是靠EventDispatcher來決定的。

Event的相關類

當出現來自滑鼠,鍵盤,觸屏,搖桿等輸入源的輸入時,這個事實稱之為事件

引擎無時無刻都在感受事件。

Event

可以看出Event主要包含三個變數,一個是事件類型_type(也就是定義的枚舉類型:觸摸、鍵盤等),isStopped判斷事件是否停止,只要事件停止,其相關的Listener都要停止callback調用。

EventTouch
它對應於四種觸摸操作,不同的EventCode可以告訴Listener來調用不同的callback。

EventCustom
它是用戶自定義事件,userData記錄用戶自定義數據,另一個eventName是用戶給事件取的別名

上面的源碼都有英文注釋,我就不多解釋了,我只說一個最重要的_isRegistered,它判斷事件有沒有被注冊,如果沒有被注冊就不會觸發。(如何注冊事件?將事件加入dispatcher)

在講它之前,我們先了解一下它的一個重要變數。

sceneGraphListeners: 一個事件(比如說觸摸事件),需要按照一定的響應序列,依次對這些Node進行事件響應,所以該類型的事件都會綁定一個與此相關聯的node,並且 響應順序是與node在scene下的zorder相關的 。該類型下的事件優先順序統一為0。(與渲染樹有關)

fixedListeners: 優先順序根據 fixedPriority 的數值從小往大排序、

只要出現了刪除,修改,添加監聽器的時候,監聽器列表需要重新排序,都需要設置相應的 DirtyFlag 操作。但是 Cocos-2dx v3.10 裡面的 updateListeners 函數有刪除監聽器的操作,然而並沒有設置相應的 DirtyFlag 操作。
會拋出下面的異常

Gt0Index() 方法其實就是獲取到當前監聽器中 fixedPriority == 0 的監聽器在監聽器向量中的位置,它 只有在給 Listener 排序的時候會設置,但是如果更新了對應 ListenerID 的向量(EventListenerVector),但是沒有重新排序,就會出現 _gt0Index 未及時更新的情況 ,導致拋出這個異常。

引用:
Cocos2dx游戲引擎(3.x)----新的事件分發機制
cocos2dx之event事件(一)
cocos2dx之event事件(三):事件分發器EventDispatcher
Cocos2dx-v3.10 事件分發機制源碼解析

⑺ egret 和cocos2d-x-js哪個目前更穩定更好用

如果大型游戲,強烈建議不要使用cocos2d-js
我們目前的幾個項目都是cocos2d-js開發的,我打算把這幾個項目轉egret。有如下幾個理由:
1、cocos ide有BUG:斷點會崩潰、代碼提示很差、內存太高、虛擬機的菜單欄會影響事件(迭代了很多版本,這菜單欄BUG都沒修復)
2、studio的工作流在幾個引擎中是最差的,而且有BUG。經常和實際表現不一致。而且內存佔用大,會崩潰。不能繼承(這個問題最嚴重,不能繼承按鈕,那麼按下縮放等高級功能就很蛋疼)。
3、
架構太差。寫點小功能沒事,如果想寫大型游戲,這套架構會讓你抓狂!比如最簡單的按鈕事件,我必須在事件方法裡面加個觸摸類型判斷。一個很簡單的點擊,就
多出很多這種相似的代碼!4、UI有好幾套,然而每一套都有BUG。CCUI的設計也是很糟糕的!同時也是崩潰的罪魁禍首。
5、引擎BUG問題,
很多BUG會讓你欲哭無淚,比如坐標會出現undefined。再比如熱更新的BUG,XCODE編出的包默認是js而不是jsc,當這個包發布商店就會
出現不能熱更新的問題,同時也進不去游戲,卡在了熱更新界面。(這個問題導致我們流失了3個月的用戶,知道蘋果商店通過審核位置),再比如
java/objectc和js的交互,這個都有問題!再比如:ios第三方輸入法會導致崩潰!
6、工作流問題,IDE的斷點的觀察變數很不友好、studio導出的配置很大、studio擴展性很差。在IDE 1.2版本出來之前,我們團隊甚至無法斷點,只能列印日誌來debug。
7、工作效率問題,代碼提示先不談。我實現一個簡單的列表都能折騰很久,那ccui的list真是太不好用!除此之外,裁剪、遮罩這些只需要一行的代碼,在cocos下面需要無數行!
8、
引擎升級問題:cocos大概一個月1個升級,egret是2周。然而cocos升級會帶來大量的新BUG,而且兼容性很差。導致我們現在還用3.0版
本。最蛋疼的是,官方的3.6版本又不能斷點了!3.0升級到3.6還會導致布局混亂、九宮失效、崩潰閃退(絕對不是代碼問題這個解釋了)!基本上
cocos每加個新功能都會帶來無數新BUG,老BUG修復量也少,我論壇反饋的問題經常需要迭代2到3個版本才修復,下個版本修復兼職是不可能。而
egret不僅迭代快,BUG修復也勤快!也很少有一些導致產品質量的驗證BUG。
9、官方人員態度問題:我在cocos論壇發的BUG反饋,過了7天才有人來回復。地址(從3.0到3.1和3.2的BUG,官方幫忙看下),再看下egret我發的BUG反饋,當時是下班時間,然而第二天一早就回復我了。地址(Egret社區-BUG列表)
10、API問題:cocos經歷了3個大版本,官方API文檔也有的API,實際盡然是沒有的,官方回復是還沒加入js綁定。
11、跨平台問題:cocos2d-js經常是HTML5和JSB表現不一致。導致我們現在只能專注JSB而放棄HTML5版本。egret很少有這個問題。
12、
性能問題:先拋開runtime。如果你用了ccui,那麼我100%保證你的cocos2d-js的性能會被egret秒殺。再來說下native下面
的性能對比,cocos的人說egret是js寫的邏輯,而他們是綁定。那麼問題來了,在現在,js的邏輯產生的性能壓力一點都不是問題(參考
node.js,能用js寫伺服器了都)。主要的性能壓力其實是在渲染上面,而他們2個都是opengl作為渲染的。如果用了ccui,那麼還是被
egret秒殺。那ccui帶來的drawCall真是太!!再來談runtime,egret現在很多瀏覽器都集成了runtime(可以opengl
渲染代替canvas渲染),而cocos-js只是說在合作,已經慢了一步。
13、產品路線圖問題:cocos的幾個產品一心在弄3D,egret都已經自己搞了一個IDE了。開發基本的生活cocos都沒保障好,就去想和u3d打架!
14、內部問題:cocos估計內部很不和諧,ide據說是1個人在開發,studio是30個人(30個人整出這東西),而且studio是用的.NET搞的,跨平台最呵呵的技術!QT、AIR那些那麼多高效率,擴展性強的技術不用,選了個.NET。。。。
---------------------------------------------------------------------------------------------------------------------------------

外話:說了那麼多cocos的不是,我也曾試著愛過它,我甚至開發了一個和egret
wing一樣的UI編輯器,寫了個和Flash/Flex一樣的API(egret用的這套,這種架構很好用,簡單明了)。其中UI編輯器還加上了
unity3d那種綁定腳本的功能。然而因為cocos底層的一些令人發狂的BUG,我最終是放棄了。有egret這個車子在,我還造什麼輪子?我打算把
手裡頭的這套cocos的東西開源。然後去整egret去!
---------------------------------------------------------------------------------------------------------------------------------
再來個題外話:
游戲引擎cocos2d-js和egret 對比

個是網路搜索第一的對比,裡面說cocos2d的工具比egret多,我不否認,但是能用的基本沒有。而egret的工具很穩定。就拿最簡單的骨骼動
畫,cocos連龍骨都不支持,studio裡面的骨骼設計也是坑的不行,egret的骨骼設計工具從界面和實用性都已經完爆studio了!
再來說上面的地址裡面的成功產品:捕魚達人、DOTA傳奇、我叫MT那都是cocos2dx寫的,和js版本一點關系都沒有!請問你有見過網頁版的刀塔傳奇么?
上面的開發語言對比,大項目來說,ts真的是完爆js!js那不小心就會出錯真心不適合大項目,不然微軟不會造這個輪子。
上面的參考資料對比,cocos2d-js的文檔連參數的注釋都沒,和c++文檔作參考也不行,很多參數是不一致的!而egret在開發工具裡面就繼承了中文的幫助。

從目前狀況看,今年絕對是egret產品井噴的一年,不信走著瞧!cocos真是把我坑慘了!
---------------------------------------------------------------------------------------------------------------------------------

次申明,請拿cocos2d-js或者JSB的大作出來,不用拿2dx的東西。說到2dx,你們再去了解下,榜單上,有幾個人是沒改過引擎源碼的,有幾個
游戲能隨著cocos引擎升級而升級。用studio的又有幾個。並不想和王哲斯逼,只是希望你們能正視BUG,提高體驗。如果好,我們團隊會考慮
cocos技術的,否則只能用egret和unity3d了。我說cocos這么多不是,也是希望他成長,能給開發者帶來更多利益,帶來更多方便,而不是
各種無厘頭的問題,各種蹩腳的手段去開發。還有,我說的這幾點,@王哲
你接招,如果我不說出這些BUG,這些問題,那麼估計還不一定改。egret同樣有個人叫王澤,然而他的理念完全當我們開發者是用戶,提高開發體驗,這個

⑻ 怎樣製作基於Cocos2d-x的SLG游戲

創建項目

如果要說到環境搭建,那又該是一篇長篇大論了,所以這里我就不說了,不清楚的同學到網上問度娘吧,會有很多不同系統不同版本搭建的結果的。

Cocos2d-x創建項目的方式一直都在不停的改動,所以這里我覺得很有必要給大家介紹下如何創建項目。

創建3.2的項目其實很簡單,打開終端(Windows是cmd)進入到引擎文件夾目錄,然後輸入以下命令就可以創建。

cocos new SLG -p com.cocos2dx.rs -l cpp -d /Users/cocos2d-x/workspace/cocos2dx/cocos2d-x-3.2/projects
如下圖:

p1

說明:

new:new後是項目名
-p :-p後是包名
-l :-l後是語言(cpp指c++)
-d :-d後是項目生成路徑
如果一切無誤,那等待幾分鍾以後你就可以在給定的目錄下找到新建的項目了。打開項目工程後,下面我們就可以開始游戲的製作了。

前期准備

打開工程後,運行程序,你會發現它不是一個空的項目,在Classes和Resource文件夾下Cocos2d-x已經給出了一些實質性的東西,當然這些不是一定都有用的,它們存在的目的是為了給我們展示一個典型的Cocos2d-x的例子。

除了AppDelegate.h 和 AppDelegate.cpp文件,這兩個文件夾下其他的東西都是可被刪除的(不過在刪除之前,可以先看一下HelloWorld類,了解下它的類結構、類方法,以便對Cocos2d-x進行初步的學習,也方便初學者依葫蘆畫瓢再寫一個類似的場景)。AppDelegate類是創建項目時自動生成的一個類,它控制著游戲的生命周期,是Cocos2d-x游戲的通用入口文件,類似於一般 Windows 工程中main函數所在的文件。

打開AppDelegate.cpp文件,在游戲載入期的最後一個applicationDidFinishLaunching()函數中我們可以設置第一個啟動的游戲場景,如下:

auto scene = GameScene::createScene();
director->runWithScene(scene);
GameScene是我們新建的一個游戲場景,下面會講解。

解析度適配

在我的游戲中,首先第一件事還是做解析度適配,這是個恆古不變的定律。現如今市場中各種屏幕尺寸和解析度的移動設備層出不窮,為了更好地適應這些設備,游戲的解析度適配是十分有必要的。

在農場游戲中,很最要的一點就是實現大地圖背景的拖動、放大縮小等操作,所以可想而知,我們的地圖不是全部都顯示在屏幕內的,也就是說,我們不能像之前的方式那樣把整個顯示內容做適配,我們應該留有一定的邊距供玩家拖動。如下圖所示:

p2

同樣是在applicationDidFinishLaunching函數中,我們添加如下一段代碼對游戲做解析度適配,以便它能更好的適應不同的運行環境。

glview->setDesignResolutionSize(480.0f, 320.0f, ResolutionPolicy::FIXED_HEIGHT);
std::vector searchPath;
searchPath.push_back("H_1920");
FileUtils::getInstance()->setSearchPaths(searchPath);
director->setContentScaleFactor(1440.0f / 320.0f);
解析度適配的原理,建議大家閱讀一下:Cocos2d-x 多解析度適配完全解析這篇文章,雖然它不是針對最新版Cocos2dx引擎,但它還是能很清楚的告訴你解析度適配的原理和方法。

還有要說明的一點是,我們的游戲地圖的高為1920,解析度適配時則只設為了1440,意思就是說,我們本該全在屏幕內的內容留出了4分之一的高度在屏幕外。

編輯游戲地圖

模擬經營游戲中,游戲地圖多為拼接而成,這里我們用瓦片地圖編輯器(Tiled Map Editor)來製作游戲的地圖,它可以把編輯後的地圖文件保存為TMX格式的文件,能被Cocos2d-x很好的支持。瓦片地圖(Tile Map)不但生成簡單,而且可以靈活的用於引擎中。關於瓦片地圖的介紹可參考瓦片地圖一文。

接下來我們開始創建地圖。

運行TiledMap編輯器,新建一個地圖文件。填寫如下對話框:

p3

在地圖方向選項內,可以選擇正常、45度(傳說中的2.5D)和45度交錯,這里我們選擇45度。接下來需要設置地圖大小,這里的數值是指有多少格tile元件,並不是像素,這里我們選擇30×30的地圖。

最後是確定tile元件的大小,根據美工提供的地面元件大小設置,這個教程里,我們使用128×64的大小。

在地圖大小一欄中,你可以看到最終的地圖大小為3840 * 1920。

點擊確認之後,你可能已經發現了,這個游戲地圖它是菱形的,如下圖所示。

p4

這里你可能會想,為什麼要菱形的啦,選擇45度交錯建一個接近矩形的不行嗎?呵呵,其實這樣也是可以的,只不過啦,Cocos2d-x引擎中默認是不支持45度交錯的,如果需要在引擎中載入這種交錯的地圖必須自己修改引擎代碼(看到這,是不是整個人都不好了),而且在修改過後還不能正確的得到地圖的大小,需要自己編寫計算大小的公式代碼。鑒於這一點,我在想,難道《全名農場》、《請叫我海盜》等游戲地圖的四個角都不能被點擊操作都是因為這個原因嗎? 哈哈,就當是我想多了吧。其實菱形就菱形吧,其他的游戲也都這樣,可以在菱形地圖的下層貼一層背景來掩蓋這一現象。

接下來,我們還是回到正題開始拼接地圖吧。選擇地圖-》新圖塊,然後填寫如下所示的對話框。

p5

選擇瀏覽按鈕,將准備好的圖塊文件載入編輯器。接著設置圖塊的寬度和高度(默認情況下是一個tile元件的大小,但),根據圖塊文件中圖塊的大小來設置。邊距、間距什麼的,可不做修改,0就好。

最後選中相應的圖塊,拖動到渲染區拼一個理想的地圖。

p6

暫時我們就只簡單的拼一個地圖就可以了,後面再根據游戲需要,設置一些必要的對象和屬性。

載入地圖資源

新建一個GameScene場景,載入游戲地圖。不過在此之前,請把編輯好的tmx和圖塊文件拷貝到Resource文件夾下。GameScene的結構和HelloWorld差不多,照著HelloWorld類依葫蘆畫瓢就可以建一個。你可以先看看它是如何實現的,再實現自己的類。這里就不多說了。

在Cocos2d-x中使用TMX,有以下流程供你參考:

首先用地圖編輯器編輯你的地圖,導出成TMX 格式。
將導出的TMX 文件和相關圖片放在工程的Resoure文件夾下。
使用Cocos2d-x中TMXTileMap 類的create方法創建地圖對象,TMX 文件的解析是引擎內部完成的,所以我們不需要擔心。TMXTileMap 是Node 的子類,因此只要添加到場景中即可。
通過TMXTileMap,可以獲得其他相關對象,比如單個瓦片(屬Sprite類),比如對象組(ObjectGroup類),比如層(TMXLayer類)等;你可以通過TMXLayer類修改,刪除或者添加某個網格位置的瓦片,這樣可以動態的修改地圖了,你還可以進行其他的操作,相關的API 我們後面使用到了再做講解。
在GameScene類的init函數中添加如下的代碼創建游戲地圖:

mapLayer = LayerColor::create(Color4B(78,127,41,255));
this->addChild(mapLayer,-1);

auto map = TMXTiledMap::create("mymap4.tmx");
mapLayer->setContentSize(map->getContentSize());
mapLayer->addChild(map, 10);

auto treeSprite = Sprite::create("1.png");
treeSprite->setAnchorPoint(Vec2(0, 0));
treeSprite->setPosition(Vec2(0, 0));
treeSprite->setScale(2);
mapLayer->addChild(treeSprite, 11);
代碼中新建了一個帶顏色的背景層,背景層的尺寸等於載入的TMX地圖大小。接著把地圖和如下的一個遮蓋層(其實就是為了防止菱形的地圖看起來那麼突兀而添加的一層)依次添加到層上。

⑼ cocos2dx怎麼用

Cocos2d-x是一個開源的移動2D游戲框架,MIT許可證下發布的。這是一個C++ Cocos2d-iPhone項目的版本。Cocos2d-X發展的重點是圍繞Cocos2d跨平台,Cocos2d-x提供的框架。
手機游戲,可以寫在C++或者Lua中,使用API是Cocos2d-iPhone完全兼容。Cocos2d-x項目可以很容易地建立和運行在iOS,Android,黑莓Blackberry等操作系統中。Cocos2d-x還支持Windows、Mac和Linux等桌面操作系統,因此,開發者編寫的源代碼很容易在桌面操作系統中編輯和調試。

cocos2d-x主要功能:

流程式控制制(Flow control):非常容易地管理不同場景(scenes)之間的流程式控制制。

精靈(Sprites):快速而方便的精靈。

動作(Actions):告訴精靈們該做什麼。可組合的動作如移動(move)、旋轉(rotate)和縮放(scale)等更多。

特效(Effects):特效包括波浪(waves)、旋轉(twirl)和透鏡(lens)等更多。

平面地圖(Tiled Maps):支持包括矩形和六邊形平面地圖。

轉換(Transitions):從一個場景移動到另外一個不同風格的場景。

菜單(Menus):創建內部菜單。
文本渲染(Text Rendering):支持標簽和HTML標簽動作。
文檔(Documents):編程指南 + API參考 + 視頻教學 + 很多教你如何使用的簡單測試例子。

BSD許可:盡管用就是了。

基於Pyglet:沒有外部的依賴。

基於OpenGL:支持硬體加速。

cocos2d-x基本介紹:

Cocos2d-x是MIT許可證下發布的開源游戲引擎,游戲開發快速、簡易、功能強大。2015年2月,觸控科技正式推出了游戲開發一站式解決方案cocos,將Cocos 2d-x、Cocos Studio、Cocos Code IDE等框架及工具整合在一起。

Cocos2d-x核心優勢在於允許開發人員利用C++、Lua及Javascript來進行跨平台部署,覆蓋平台包括iOS、Android、Windows Phone、Windows, Mac OSX 3及Tizen等等,省事省力省成本。

Cocos2d-x用戶不僅包括個人開發者和游戲開發愛好者,還包括許多知名大公司如Zynga、Wooga、Gamevil、Glu、GREE、Konami、TinyCo、HandyGames、IGG及Disney Mobile等。截止2013年9月,全球基於Cocos2d-x引擎的游戲下載量高達逾15億,其中許多還占據蘋果應用商店(AppStore)和谷歌應用商店(Google Play)排行榜。同時許多公司如觸控、谷歌、微軟、ARM、英特爾的工程師在Cocos2d-x領域也非常活躍。

另外,Cocos2d-x版本升級困難的問題,是許多開發者的一大苦惱,而經過整合的cocos,解決了Cocos2d-x的這一問題。升級cocos,其相匹配的Cocos2d-x也將自動進行升級,這極大的提高了開發效率,為開發者們帶來便利,同時也為Cocos2d-x的進一步發展打下基礎。

cocos2d-x特點:

易於使用:游戲開發者可以把關注焦點放在游戲設置本身,而不必消耗大量時間學習晦澀難懂的OpenGL ES,此外,Cocos2d-x還提供了大量的規范。
高效:Cocos2d-x基於OpenGL ES進行圖形渲染,從而讓移動設備的GPU性能發揮到極致。

靈活:方便擴展,易於集成第三方庫。

免費:基於MIT協議的免費開源框架,用戶可以放心使用,不用擔心商業授權的問題。

社區支持:關心Cocos2d-x開發者自發建立了多個社區組織,可以方便查閱各類技術資料

閱讀全文

與cocos2dx引擎源碼視頻相關的資料

熱點內容
單片機如何給電腦加密碼 瀏覽:509
如何刪掉多餘的伺服器 瀏覽:220
c編程演算法 瀏覽:833
堵車如何緩解壓力 瀏覽:17
喜鵲快貸app怎麼了 瀏覽:263
海龜編輯器積木編程怎麼安裝 瀏覽:185
程序員理發店生意怎麼樣 瀏覽:603
程序員羅技 瀏覽:180
軟考初級程序員課程2021下載 瀏覽:491
杭州程序員奶奶 瀏覽:880
不聽命令造成錯誤 瀏覽:981
kool系統源碼 瀏覽:610
流氓app在哪裡看 瀏覽:98
域名購買了怎麼指向伺服器 瀏覽:121
安卓手機如何讓照片顏色反轉 瀏覽:859
怎麼下載卓睿安手機版 瀏覽:514
h3crange命令 瀏覽:468
php前景和python 瀏覽:338
php壓縮圖片內存大小 瀏覽:495
在哪裡可以查看雲伺服器的信息 瀏覽:70