每日小結(jié)

2020/5/14

參考資料

文章:老師!我想用Tilemap做元?dú)怛T士款地圖!
文章:用Unity實(shí)現(xiàn)元?dú)怛T士地圖的自動(dòng)生成
視頻:TileMap瓦片地圖簡(jiǎn)介,以及它的優(yōu)化原理
視頻:TileMap瓦片地圖的詳細(xì)使用方法

小記

今天隨手看了一篇文章 是關(guān)于tilemap地圖繪制以及元?dú)怛T士地圖生成
個(gè)人認(rèn)為 tilemap的原理是將渲染圖的單位區(qū)域由1x1擴(kuò)大到nxn 視頻中用紅白機(jī)舉例 原本紅白機(jī)分辨率是256x240,一個(gè)像素點(diǎn)有240種顏色可以用1字節(jié)(最多256個(gè)顏色)來(lái)表示,這樣一來(lái)繪制就需要256x240x1=61440字節(jié)=61.44kb,而紅白機(jī)總共顯存就2kb,明顯不夠用,所以這里使用到了tilemap的原理:鋪瓦片!
使用8x8的瓦片鋪滿 256/8=32,240/8=30,32x30=960,每個(gè)瓦片用0~255編號(hào),那么960b就可以表示出一個(gè)屏幕的所有內(nèi)容;一個(gè)場(chǎng)景最多使用15種瓦片,15x8x8=960b。這樣一來(lái) 只需要960+960=1920b就可以顯示一個(gè)屏幕的內(nèi)容了,大大的減少了開(kāi)銷(xiāo),確實(shí)劉辟~
另一個(gè)視頻中演示了unity中的tilemap如何使用,也是非常方便。
關(guān)于自動(dòng)生成地圖的算法,用的是一個(gè)迭代的思想:首先將地圖分為nxn的區(qū)域,一塊區(qū)域代表一個(gè)房間的場(chǎng)景,我們隨機(jī)取一塊地區(qū)a作為起點(diǎn),然后找到a周?chē)?個(gè)方向的區(qū)域(靠墻則不計(jì)入),從這些區(qū)域中隨機(jī)取1~2個(gè)作為a區(qū)域的下一間房b1 b2,然后再將其中的一個(gè)看成a,循環(huán)此操作,達(dá)到房間上限后,將最后一個(gè)房間當(dāng)做終點(diǎn),這樣就獲得到了一個(gè)樹(shù)結(jié)構(gòu),從而能夠畫(huà)出房間區(qū)域以及對(duì)應(yīng)走廊~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容