本文轉(zhuǎn)自這里
Tilemap
首先临梗,介紹一下Tilemap的基本概念,Tilemap用起來其實(shí)就和現(xiàn)實(shí)中畫畫一樣稼跳,它由以下五個基本部分組成:
(圖 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è)置名字和屬性囱嫩,然后指定保存位置。
(圖 02)
現(xiàn)在要向調(diào)色板加入新瓦片漏设,拖動精靈到調(diào)色板中墨闲,會打開一個新窗口,詢問瓦片的保存位置郑口。你也可以通過精靈圖集拖動多個瓦片鸳碧。在調(diào)色板中有了瓦片后盾鳞,要想把瓦片添加到Tilemap上,你必須選擇一個瓦片再拖動它瞻离。瓦片加入調(diào)色板后腾仅,就可以用筆刷繪制場景了。
使用Tilemap中的碰撞體
當(dāng)繪制好場景后套利,角色還不能在場景的地面上移動推励,因?yàn)檫€沒添加碰撞體。在Tilemap中添加碰撞體十分簡單日裙,只要給Tilemap對象加入一個Tilemap Collider 2D組件即可吹艇《杳郏可以看到昂拂,這個組件自動為該Tilemap上的所有瓦片都加入了碰撞體。
(圖 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所示。
(圖 04)
這樣我們的Tilemap部分就完成了愤兵。
Cinemachine 2D
Cinemachine可在 Asset Store資源商店免費(fèi)下載鹿霸,最新版已經(jīng)支持在2D游戲中使用。
首先依次點(diǎn)擊Cinemachine -> Create 2D Camera秆乳,創(chuàng)建新的虛擬攝像機(jī)懦鼠。
(圖 05)
如果這是你首次添加該組件到場景中,它還會自動添加一個Cinemachine Brain到你的攝像機(jī)上屹堰,并創(chuàng)建一個帶有Cinemachine Virtual Camera組件的GameObject對象肛冶。我們可以將我們的角色設(shè)為跟隨對象,即下圖中的Follow屬性扯键。在2D下設(shè)置虛擬攝像機(jī)的過程和3D中的一樣睦袖。
(圖 06)
在2D游戲開發(fā)中,一個很常用的組件是Cinemachine Confiner 2D忧陪。用它可以設(shè)置Bounding Shape 2D來將攝像機(jī)限制在某個區(qū)域中扣泊,讓我們的攝像機(jī)不會移出關(guān)卡近范,例如在角色掉出地圖時。
(圖 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)行繪制瞪浸。
(圖 08演示規(guī)則瓦片的使用效果 )
(圖 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丐巫。
(圖 10 隨機(jī)瓦片的使用效果 )
Custom Tiles Palette包含瀑布瓦片谈况。如果選中瀑布規(guī)則瓦片,也就是Waterfall-RuleTile递胧,可以看到它的導(dǎo)出類型為動畫(Animate)碑韵。這樣就可以為每個瓦片指定動畫幀。
(圖 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)行繪制蓖谢。
(圖 12 預(yù)制件筆刷繪制效果)
制作出《超級馬里奧》的2D和3D混合效果捂蕴?
現(xiàn)在來做點(diǎn)別的東西。Nintendo Switch上剛推出的《超級馬里奧》中闪幽,有一些關(guān)卡混合了2D和3D的畫面啥辨,這種效果十分讓人印象深刻。如何在Unity中實(shí)現(xiàn)這個效果呢盯腌?
(圖 13 超級馬里奧游戲畫面 )
正常情況下溉知,攝像機(jī)會直接渲染到你的屏幕。我們?nèi)绾文茏寯z像機(jī)看到內(nèi)容并顯示在另一個對象上呢腊嗡?你可能注意到攝像機(jī)有一個屬性着倾,叫目標(biāo)紋理(Target Texture)拾酝。
(圖 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部分跳仿。
得到的效果如下圖诡渴。
(圖 15)
這樣一來,我們就實(shí)現(xiàn)了類似《超級馬里奧》中的2D和3D混合效果菲语,是不是很簡單妄辩!