天天看點

(NO.00005)iOS實作炸彈人遊戲(三):從主場景類談起

大熊貓豬·侯佩原創或翻譯作品.歡迎轉載,轉載請注明出處. 如果覺得寫的不好請告訴我,如果覺得不錯請多多支援點贊.謝謝! hopy ;)

我又粗粗看了下整個項目的代碼,比較多:

(NO.00005)iOS實作炸彈人遊戲(三):從主場景類談起

不少類都與其他類有着千絲萬縷的聯系,是以在後面交代某個類的時候可能會遇到一些其他類中的代碼,這個大家先看名會意吧.如果實在不明白的,都是我叙述的原因,和大家的了解力沒有任何關系 ;).大家可以随時在博文後面直接跟帖發消息給我,如果時間允許,每條我都會回複.

mainscene類是整個工程裡代碼最多的類之一.共有六十多個方法:

(NO.00005)iOS實作炸彈人遊戲(三):從主場景類談起

由于遊戲本身場景内容比較簡單,是以将所有内容都放到mainscene類中,沒有使用其他的場景類了,在比較複雜的遊戲中還得再分成更多的scene,比如本貓正在鼓搗的rpg遊戲soulofpanda:

(NO.00005)iOS實作炸彈人遊戲(三):從主場景類談起
(NO.00005)iOS實作炸彈人遊戲(三):從主場景類談起

遊戲中包括了大量的子場景和嵌入層,不過這個是題外話了.

主場景裡包括了所有的使用者互動部分和地圖顯示部分.無論如何如果不給玩家和敵人一個空間,任何遊戲也無從開始,是以我們先談談地圖.

我們希望自動生成如下的地圖:

(NO.00005)iOS實作炸彈人遊戲(三):從主場景類談起

灰色的牆的位置是固定不變的,紅色的磚塊位置是随機擺放的.由于磚塊下面要藏有道具和出口,是以我們很自然的就必須把整個地圖劃分為不同的層.

以前玩過tiled的都知道,tiled是一個很棒的地圖編輯軟體,盡管目前的版本中有一些不盡如人意的地方,比如同一層中隻能在一張地圖集中選擇瓦塊.但總的來說tiled功能還是很強大的,如果以後有機會我會單開一系列關于tiled制作地圖的博文.

tiled還可以建立特殊的層,稱為對象層.對象層不是用來擺放瓦塊的,而是用來放置幾何圍界對象的,在rpg類型的遊戲中有着重要的用途,但是在炸彈人app中沒有用到對象層,是以大家暫時不用管它啦.

首先我們制作一張空白的地圖:

(NO.00005)iOS實作炸彈人遊戲(三):從主場景類談起

将地圖tmx檔案和相關的地圖集檔案全部拷貝到炸彈人工程資源目錄下的tilemap檔案夾中.

在xcode中打開mainscene.m檔案,初始化方法代碼如下:

簡單說一下,在mainscene類的初始化方法中,首先打開顯示調試,初始化手勢識别器,然後是執行個體數組的初始化和其他初始化代碼.接下來到了重要的部分:地圖的初始化,首先将空白地圖加載進來,并建立maphelper類執行個體,裡面有很多友善的方法可供調用;然後建立其地圖中各個層的引用;之後是建立遊戲主角炸彈人,然後調用initgamedatafromgd方法,其中包含了地圖随機生成的代碼,我們後面會講到.

繼續閱讀