溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何制作一個(gè)基于Tile的游戲 Cocos2d-x 2.0.4

發(fā)布時(shí)間:2020-06-28 09:28:03 來源:網(wǎng)絡(luò) 閱讀:583 作者:杜甲同學(xué) 欄目:游戲開發(fā)

 本文實(shí)踐自 Ray Wenderlich 的文章《How To Make a Tile-Based Game with Cocos2D》,文中使用Cocos2D,我在這里使用Cocos2D-x 2.0.4進(jìn)行學(xué)習(xí)和移植。這個(gè)游戲是關(guān)于一個(gè)忍者在沙漠中尋找西瓜的故事。
     在這部分內(nèi)容,將會(huì)學(xué)習(xí)到如何用Tile創(chuàng)建一個(gè)地圖,如何加載地圖到游戲,如何讓地圖跟隨玩家滾動(dòng),以及如何使用對象層。下一部分內(nèi)容,將介紹如何在地圖中創(chuàng)建可碰撞的區(qū)域,如何使用Tile屬性,如何創(chuàng)建可拾取的物品和動(dòng)態(tài)修改地圖,以及如何確保忍者不會(huì)吃撐掉。

步驟如下:
1.新建Cocos2d-win32工程,工程名為"TileGame",去除"Box2D"選項(xiàng),勾選"Simple Audio Engine in Cocos Denshion"選項(xiàng);
2.下載本游戲所需的資源,將資源放置"Resources"目錄下;

如何制作一個(gè)基于Tile的游戲 Cocos2d-x 2.0.4

3.使用Tiled工具制作地圖。首先,下載開源的Tiled Map Editor工具,當(dāng)前版本為0.8.1,建議使用QT版本。在Tiled工具,點(diǎn)擊菜單欄→"文件"→"新文件",在彈出的對話框中,填入如下內(nèi)容:

如何制作一個(gè)基于Tile的游戲 Cocos2d-x 2.0.4

地圖方向分為:正常、45度。地圖大小填入的是tile單位。塊大小是資源每個(gè)tile的實(shí)際像素大小,在本篇中,使用32x32大小。點(diǎn)擊"確定"。
4.接著,把所需要的tile集合加入到工具中。菜單欄→"地圖"→"新圖塊",填入如下內(nèi)容:

如何制作一個(gè)基于Tile的游戲 Cocos2d-x 2.0.4

點(diǎn)擊"瀏覽",選擇"Resources"目錄下的tmw_desert_spacing.png文件,會(huì)自動(dòng)填充"名稱"內(nèi)容。塊的寬高都為32像素。邊距就是當(dāng)前tile塊開始計(jì)算實(shí)際像素時(shí),應(yīng)該跳過多少像素,寬高一樣。間距就是兩個(gè)tile塊之間的像素距離,寬高一樣??纯?span >tmw_desert_spacing.png文件,可以看到每個(gè)tile塊都1像素的黑色邊框,這就是為什么要設(shè)置邊距和間距為1像素。

如何制作一個(gè)基于Tile的游戲 Cocos2d-x 2.0.4

點(diǎn)擊"確定"。
5.可以看到tile塊出現(xiàn)在"圖塊"窗口中?,F(xiàn)在可以開始畫地圖。點(diǎn)擊菜單欄→"視圖"→"顯示網(wǎng)格",可以開啟網(wǎng)格參照線。點(diǎn)擊工具欄"圖章刷",然后在"圖塊"窗口點(diǎn)選一個(gè)tile塊,接著在地圖中,點(diǎn)擊放入你所想要的位置。

如何制作一個(gè)基于Tile的游戲 Cocos2d-x 2.0.4

用工具欄"填充",把地圖背景填充成同一個(gè)tile塊,這里為沙漠背景。可以從"圖塊"窗口點(diǎn)選多個(gè)tile塊,可按Ctrl鍵多選,這樣可以一次性將多個(gè)tile塊放入地圖中。進(jìn)行制作地圖,確保至少有一對建筑在地圖上,因?yàn)楹竺嫘枰恍〇|西來做碰撞。一旦完成了地圖的制作,雙擊"圖層"窗口中的當(dāng)前層"塊層 1",重命名為"Background"。然后點(diǎn)擊工具欄"保存",命名為"TileMap.tmx",保存在"Resources"目錄下。

如何制作一個(gè)基于Tile的游戲 Cocos2d-x 2.0.4

6.將Tile地圖加入到場景中。在HelloWorldScene.h文件中,添加如下代碼:


CC_SYNTHESIZE_RETAIN(cocos2d::CCTMXTiledMap*, _tilemap, Tilemap);

CC_SYNTHESIZE_RETAIN(cocos2d::CCTMXLayer*, _background, Background);


HelloWorldScene.cpp文件中,構(gòu)造函數(shù)添加如下:


HelloWorld::HelloWorld()

{


       _tilemap = NULL;

       _background = NULL;

}


初始化init函數(shù),修改如下:


<li id="afzz5"><delect id="afzz5"></delect></li>
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    向AI問一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI