Unity中使用Tilemap快速創(chuàng)建2D游戲世界(轉(zhuǎn))

本文轉(zhuǎn)自這里
Tilemap

首先临梗,介紹一下Tilemap的基本概念,Tilemap用起來其實(shí)就和現(xiàn)實(shí)中畫畫一樣稼跳,它由以下五個基本部分組成:

image

(圖 01)

  • Sprite(精靈):紋理的容器盟庞。大型紋理圖集可以轉(zhuǎn)換為精靈圖集(Sprite Sheet)。

  • Tile(瓦片):包含一個精靈汤善,以及二個屬性什猖,顏色和碰撞體類型票彪。使用瓦片就像在畫布上畫畫一樣,畫畫時可以設(shè)置一些顏色和屬性不狮。

  • Palette(調(diào)色板):當(dāng)你在畫布(Canvas)上畫畫時降铸,會需要一個位置來保存繪畫的結(jié)果。類似地摇零,調(diào)色板(Palette)的功能就是保存瓦片推掸,將它們繪制到網(wǎng)格上。

  • Brush(筆刷):用于將畫好的東西繪制到畫布上驻仅。使用Tilemap時谅畅,可以在多個筆刷中任意選擇,繪制出線條噪服、方塊等各種形狀毡泻。

  • Tilemap(瓦片地圖):類似Photoshop中的圖層,我們可以在Tilemap上畫上Tile粘优。

Tilemap部分其它工具:

  • Grid(網(wǎng)格):用于控制網(wǎng)格屬性的組件仇味。Tilemap是Grid的子對象。Grid類似于UI Canvas(UI畫布)雹顺。

  • Tilemap渲染器(Tilemap Renderer):用于控制Tile在Tilemap上的渲染丹墨,控制諸如排序、材質(zhì)和遮罩等无拗。

如何使用Tilemap

在層級窗口中带到,依次點(diǎn)擊Create->2D Object->Tilemap 新建Tilemap,這將自動創(chuàng)建兩個GameObject對象英染,一個是名為Grid的父對象揽惹,上面帶有Grid組件。另一個是名為Tilemap的子對象四康,它在Grid對象下搪搏,帶有Tilemap和Tilemap Renderer組件。

然后依次點(diǎn)擊Window->Tile Palette打開調(diào)色板窗口闪金。在調(diào)色板窗口中疯溺,選擇Create New Palette,如圖02所示哎垦。設(shè)置名字和屬性囱嫩,然后指定保存位置。

image

(圖 02)

現(xiàn)在要向調(diào)色板加入新瓦片漏设,拖動精靈到調(diào)色板中墨闲,會打開一個新窗口,詢問瓦片的保存位置郑口。你也可以通過精靈圖集拖動多個瓦片鸳碧。在調(diào)色板中有了瓦片后盾鳞,要想把瓦片添加到Tilemap上,你必須選擇一個瓦片再拖動它瞻离。瓦片加入調(diào)色板后腾仅,就可以用筆刷繪制場景了。

使用Tilemap中的碰撞體

當(dāng)繪制好場景后套利,角色還不能在場景的地面上移動推励,因?yàn)檫€沒添加碰撞體。在Tilemap中添加碰撞體十分簡單日裙,只要給Tilemap對象加入一個Tilemap Collider 2D組件即可吹艇《杳郏可以看到昂拂,這個組件自動為該Tilemap上的所有瓦片都加入了碰撞體。

image

(圖 03)

但這樣會有個問題抛猖。從圖03中可以看出格侯,有很多碰撞體(綠色邊框表示),但是大部分碰撞體其實(shí)是沒用的财著,因?yàn)榻巧粫佑|到那些瓦片联四。

我們可以通過再添加Composite Collider來優(yōu)化這里的碰撞體,Rigidbody 2D組件會隨著Composite Collider自動添加撑教。因?yàn)槠脚_不會移動朝墩,所以要記得將Rigidbody 2D上的Body Type屬性設(shè)置為Static。最后在Tilemap Collider 2D上勾選Used By Composite伟姐,在整個平臺周圍生成一個復(fù)合碰撞體收苏。設(shè)置好后的檢視窗口如圖04所示。

image

(圖 04)

這樣我們的Tilemap部分就完成了愤兵。

Cinemachine 2D

Cinemachine可在 Asset Store資源商店免費(fèi)下載鹿霸,最新版已經(jīng)支持在2D游戲中使用。

首先依次點(diǎn)擊Cinemachine -> Create 2D Camera秆乳,創(chuàng)建新的虛擬攝像機(jī)懦鼠。

image

(圖 05)

如果這是你首次添加該組件到場景中,它還會自動添加一個Cinemachine Brain到你的攝像機(jī)上屹堰,并創(chuàng)建一個帶有Cinemachine Virtual Camera組件的GameObject對象肛冶。我們可以將我們的角色設(shè)為跟隨對象,即下圖中的Follow屬性扯键。在2D下設(shè)置虛擬攝像機(jī)的過程和3D中的一樣睦袖。

image

(圖 06)

在2D游戲開發(fā)中,一個很常用的組件是Cinemachine Confiner 2D忧陪。用它可以設(shè)置Bounding Shape 2D來將攝像機(jī)限制在某個區(qū)域中扣泊,讓我們的攝像機(jī)不會移出關(guān)卡近范,例如在角色掉出地圖時。

image

(圖 07 完成后的效果延蟹,攝像機(jī)不再會移出關(guān)卡界面外 )

2d-extras

為了提高開發(fā)速度评矩,Unity創(chuàng)建了名為2d-extras的GitHub代碼庫,這里面的工具都是基于Tilemap制作阱飘,有很多實(shí)用的瓦片和筆刷斥杜,下面介紹幾個2d-extras中的實(shí)用工具。

規(guī)則瓦片(Rule Tile)

2d-extras中最重要的工具之一就是規(guī)則瓦片(Rule Tile)沥匈。不用這個工具的話蔗喂,我們每次在Tilemap上繪制時,都要從調(diào)色板選取特定瓦片再進(jìn)行繪制高帖。如果你想要繪制相鄰?fù)咂侄缫粋€拐角,你需要從調(diào)色板上一次次選取不同瓦片進(jìn)行繪制散址。這種方法效率不高乖阵。但有了規(guī)則瓦片,你可以為相鄰?fù)咂O(shè)置一組規(guī)則预麸,它將自動選擇最合適的瓦片進(jìn)行繪制瞪浸。

image

(圖 08演示規(guī)則瓦片的使用效果

image

(圖 09規(guī)則瓦片的詳細(xì)設(shè)置 )

隨機(jī)瓦片和動畫瓦片

2d-extras中還有隨機(jī)瓦片和動畫瓦片。在使用不同的變體繪制相同的對象時吏祸,這兩個工具十分有用对蒲。你可以在項(xiàng)目中找到包含規(guī)則瓦片、隨機(jī)瓦片和動畫瓦片的Custom Tile Palette贡翘。創(chuàng)建新的Tilemap蹈矮,然后設(shè)置它的排序圖層為Foreground。在Custom Tile Palette中床估,選擇任一草地瓦片含滴,將該瓦片畫在地面圖層上。必須確保Active Tilemap設(shè)為你想要繪制的Tilemap丐巫。

image

(圖 10 隨機(jī)瓦片的使用效果

Custom Tiles Palette包含瀑布瓦片谈况。如果選中瀑布規(guī)則瓦片,也就是Waterfall-RuleTile递胧,可以看到它的導(dǎo)出類型為動畫(Animate)碑韵。這樣就可以為每個瓦片指定動畫幀。

image

(圖 11)

使用自定義筆刷繪制3D對象

在2d-extras中缎脾,還加入了預(yù)制件筆刷(Prefab Brush)祝闻。它能用預(yù)制件而不是瓦片來繪制畫面。預(yù)制件可以是3D對象遗菠、粒子效果或是動畫對象联喘。要想創(chuàng)建自己的預(yù)制件筆刷华蜒,只要在項(xiàng)目窗口點(diǎn)擊Create -> Prefab Brush即可。然后選取剛創(chuàng)建的預(yù)制件筆刷豁遭,指定想要畫出的預(yù)制件叭喜。如果你添加了不止一個預(yù)制件,它會在這些預(yù)制件中隨機(jī)選取進(jìn)行繪制蓖谢。

image

(圖 12 預(yù)制件筆刷繪制效果)

制作出《超級馬里奧》的2D和3D混合效果捂蕴?

現(xiàn)在來做點(diǎn)別的東西。Nintendo Switch上剛推出的《超級馬里奧》中闪幽,有一些關(guān)卡混合了2D和3D的畫面啥辨,這種效果十分讓人印象深刻。如何在Unity中實(shí)現(xiàn)這個效果呢盯腌?

image

(圖 13 超級馬里奧游戲畫面

正常情況下溉知,攝像機(jī)會直接渲染到你的屏幕。我們?nèi)绾文茏寯z像機(jī)看到內(nèi)容并顯示在另一個對象上呢腊嗡?你可能注意到攝像機(jī)有一個屬性着倾,叫目標(biāo)紋理(Target Texture)拾酝。

image

(圖 14)

我們要在Asset文件夾里新建一個渲染紋理(Render Texture)燕少,添加到攝像機(jī)上。你可以在項(xiàng)目窗口依次點(diǎn)擊Create -> Render Texture來新建渲染紋理蒿囤。創(chuàng)建好后客们,你可以將它拖到攝像機(jī)上的Target Texture屬性中。攝像機(jī)這時會將所有對象都渲染到這個紋理上材诽。如果現(xiàn)在進(jìn)入運(yùn)行模式底挫,游戲畫面將呈現(xiàn)為一片漆黑,因?yàn)槟壳皼]有激活的攝像機(jī)渲染到屏幕上脸侥。

現(xiàn)在建邓,我們要加入一個新攝像機(jī)到場景中,攝像機(jī)的Projection屬性為Perspective睁枕。在攝像機(jī)前添加一個新的3D對象官边,本例中,我們添加的是圓柱體外遇。然后創(chuàng)建新材質(zhì)注簿,其Shader屬性設(shè)為Unlit/Texture,再將剛剛創(chuàng)建的渲染紋理拖到這個材質(zhì)上的Main Texture部分跳仿。

得到的效果如下圖诡渴。

image

(圖 15)

這樣一來,我們就實(shí)現(xiàn)了類似《超級馬里奧》中的2D和3D混合效果菲语,是不是很簡單妄辩!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末惑灵,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子眼耀,更是在濱河造成了極大的恐慌泣棋,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件畔塔,死亡現(xiàn)場離奇詭異潭辈,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)澈吨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進(jìn)店門把敢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人谅辣,你說我怎么就攤上這事修赞。” “怎么了桑阶?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵柏副,是天一觀的道長。 經(jīng)常有香客問我蚣录,道長割择,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任萎河,我火速辦了婚禮荔泳,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘虐杯。我一直安慰自己玛歌,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布擎椰。 她就那樣靜靜地躺著支子,像睡著了一般。 火紅的嫁衣襯著肌膚如雪达舒。 梳的紋絲不亂的頭發(fā)上值朋,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天,我揣著相機(jī)與錄音休弃,去河邊找鬼吞歼。 笑死,一個胖子當(dāng)著我的面吹牛塔猾,可吹牛的內(nèi)容都是我干的篙骡。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼糯俗!你這毒婦竟也來了尿褪?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤得湘,失蹤者是張志新(化名)和其女友劉穎杖玲,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體淘正,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡摆马,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了鸿吆。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片囤采。...
    茶點(diǎn)故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖惩淳,靈堂內(nèi)的尸體忽然破棺而出蕉毯,到底是詐尸還是另有隱情,我是刑警寧澤思犁,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布代虾,位于F島的核電站,受9級特大地震影響激蹲,放射性物質(zhì)發(fā)生泄漏棉磨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一托呕、第九天 我趴在偏房一處隱蔽的房頂上張望含蓉。 院中可真熱鬧,春花似錦项郊、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至拗军,卻和暖如春任洞,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背发侵。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工交掏, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人刃鳄。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓盅弛,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子挪鹏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內(nèi)容