作者:Yumir
哈嘍~大~家~好~我是Yumir~
馬老師最近發佈了一系列從零開始做橫板遊戲的教程,用的都是unity近期的新功能,其中最有意思的就是Tilemap這個功能啦,系列傳送門:
【萌新圖形學】TileMap瓦片地圖簡介,以及它的優化原理https://www.bilibili.com/video/av78424146
現在的Tilemap不僅可以實現正方形的瓦片,還有六邊形瓦片,斜45度瓦片,基本涵蓋了所有的2D遊戲地圖類型,目前看來還是邏輯簡單的正方形瓦片最受歡迎,但是正方形瓦片要怎麼做出層次感呢?
大部分情況下美術會將所有的透視投影關係都畫在一個方格子中,於是這些地圖都是薄牆,稍一對比就會發現元氣騎士的牆是比較特別的——他們看起來全都是正方體。我把這種正方體的正面正交+投影的效果在PS裡面模擬了一下:
接下來是我在Unity中實現該效果的過程:
首先需要準備好要用到的瓦片素材,我是用UnityAssetStore的免費資源2D PixelArt - Isometric Blocks自行修改得到的,已上傳到網盤:
https://pan.baidu.com/s/1GALEo-zXO1L94A7jjdDyDg
打開Unity,開始烹製我們的食材(劃掉)開始畫元氣騎士的地圖。
1、素材預設:
新建一個2D項目,將素材文件拖拽到項目中。將SpriteMode設置為Multiple,PixelsPerUnit設置為32(表示一個單位為32像素),FilterMode設置為Point。
點擊SpriteEditor打開SpriteEditor窗口,點擊Slice設置Type為GridByCellSize,設置PixelSize為32*32(素材就是32*32),點擊Slice再點擊Apply保存,圖片設置完畢。
2、製作瓦片調色板:
點擊Window>2D>TilePalette打開TilePalette面板,點擊CreateNewPalette新建一個調色板,再將上一步切割好的素材文件一併拖拽到Palette面板的空白處,系統會自動生成瓦片(Tile),這些就相當於是我們的顏料啦。
3、繪製地圖:
從前文的示意圖可以分析出這個地圖需要多層疊加,並且上下層錯開,這個通過修改上層Tilemap的Transform>Position>y偏移0.5個單位即可。
為了有前後關係需要新建幾個SortingLayers,用於設置渲染順序。
我將地圖分為四層(另有一層純色背景)分別是地板層、牆側面層、牆陰影層、牆頂面層。我畫了一張圖來表示各個層之間的位置關係以及SortingLayers設置,當然只要能把層分開怎麼設置都行。
首先繪製地板,房間的位置更加清晰明瞭:
再沿著地板鋪上側邊的牆以及柱子:
添加頂面和陰影,可以看到效果有很大的不同:
地圖繪製很簡單,但是這樣繪製出來的地圖還缺少一點靈魂,作為一面牆他得可以擋住牆內的角色,所以我在牆側面層上添加了TilemapCollider2D組件,這時候會出現如下效果。
這密密麻麻的格子,實在是不忍直視,這時候我勾選了UsedByComposite,unity會提示需要一個CompositeCollider2D,通過搜索組件添加即可。
由於這個組件會自動附帶Rigidbody2D,看看我們的牆,他怎麼能往下掉呢,BodyType應該是Kinematic才對,找一個“player”放到場景裡面看一看效果,多好啊,我真是個小機靈鬼~
當然roguelike遊戲不可能是手繪地圖,而Unity也提供了Tilemap繪製地圖的方法,可以通過代碼控制地圖生成,但是我們想要做一些簡單的遊戲固定地圖的話,本文的內容已經完全夠用了,推薦到B站去看該系列的其他視頻,畢竟一個遊戲可不僅僅只用到地圖哦。
歡迎加入遊戲開發群歡樂攪基:869551769
對遊戲開發感興趣的童鞋可戳這裡進一步瞭解:http://www.levelpp.com/