mapbox for unity 再現真實地圖

說到遊戲中的真實地圖,大家腦海中浮現的第一款遊戲應該都是火爆全球的AR遊戲《Pokémon Go》吧。今天這篇教程將爲大家介紹Mapbox Unity SDK,能夠在遊戲中獲取真實的世界地圖,或是根據真實地圖生成遊戲中的體素世界。這些地圖數據可以預先存儲在遊戲或應用中,也可以在運行時動態生成。

註冊官網賬號

打開mapbox官網(傳送門)賬號註冊成功並登錄後,點擊Get Started 並選擇Unity的sdk
這裏寫圖片描述
記得複製下來它給你提供的密鑰哦

導入unity

將下載的sdk導入unity,此時在菜單欄就會出現Mapbox選項
這裏寫圖片描述
輸入你的密鑰後,我們就可以正式開始啦。
【如果Token生效,編輯器會出現“TokenValid”提示。】
注意:博主親身體驗的情況,在導入後,出現了在網上查詢不到的報錯;
這裏寫圖片描述
代碼中所有涉及到mesh的語句都報錯了,博主到網上查了半天,因爲有關的教程很少,也不知道是什麼原因,如何有大神知道,麻煩留言告知我啦
反正我的解決方法簡單粗暴,就是把報錯的代碼都註釋掉了,神奇的是,對使用沒有啥影響(至少現在我沒看出來qwq)

示例場景

Mapbox插件提供了大量示例場景,其中最簡單的示例場景Slippy,也是遊戲項目較爲常用的功能案例。它展示了地圖從選中的某點開始不斷向外延伸,根據視野範圍的變化來實時加載新的地形,這也是遊戲中追蹤某個對象的真實地理位置時常用的功能。
這裏寫圖片描述
【好的我不會做動圖…】
此示例使用了3D網格,與Unity自帶的3D地形無異。場景中的Map遊戲對象帶有Abstract Map腳本,可以在此腳本中設置地形的起始位置的經緯度與延展範圍。
這裏寫圖片描述
Abstract Map腳本的Map Visualization字段用於定義地圖外觀。Mapbox插件已經提供了一些不同的視覺效果,但您也可以選擇自定義或重新創建地形。
這裏寫圖片描述
將Map Visualization字段設爲PoiDemoVisualization,並將起始位置改爲上海,效果如下:

這裏寫圖片描述
如果想生成《我的世界》那樣的體素地圖,可以打開VoxelWorld場景看看其設置。效果如下:
這裏寫圖片描述
自定義地圖
除了Mapbox提供的示例地圖外觀,還可以自定義想顯示的地圖信息。下面就爲大家介紹自定義地圖的步驟。

首先新建文件夾“CityMap”,然後在項目視圖選中該文件夾後單擊右鍵,依次選擇Create - Mapbox - MapVisualization新建可編程對象MapVisualizer,該對象將用作地圖的根節點,來承載所有的地圖層次。
在檢視面板中選中CityMap對象,添加CityTerrain爲其第一個Factory。
這裏寫圖片描述
可以在CityTerrain對象中設置高度縮放值,來改變建築所顯示的高度比例。
這裏寫圖片描述
溫馨提示:如果不希望地圖出現高光,可以新建材質後將其Smoothness改爲0 ,然後替代CityTerrain對象所使用的材質。

下面創建Map Image Factory。在“CityMap”目錄下新建文件夾“CityImagery”,然後在項目視圖選中該文件夾後單擊右鍵,依次選擇Create - Mapbox - Factories - Map Image Factory新建可編程對象 CityImagery。
這裏寫圖片描述
選中CityImagery對象,將其Style設爲Dark。
這裏寫圖片描述
然後選中CityMap對象,將CityImagery添加爲其第二個Factory。
這裏寫圖片描述
新建場景後創建遊戲對象Map,併爲其綁定AbstractMap腳本。
將腳本的MapVisualizer屬性設爲CityMap,Zoom設爲16。然後爲Map對象添加RangeTileProvider腳本,將其範圍設爲(1, 1, 1, 1),並將RangeTileProvider腳本賦給AbstractMap的Tile Provider字段。如下:
這裏寫圖片描述
其中Range表示以設置的經緯度爲中心,Mapbox向中心的4個方向所生成的地塊數量,默認爲0。到此一個最簡單的自定義地圖就完成了,點擊運行可以看到生成的地圖外觀如下:
這裏寫圖片描述
還可以在此基礎上添加更多層,來放置3D建築、道路紋理等內容。

本文整理摘自Unity官方公衆號

發佈了32 篇原創文章 · 獲贊 15 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章