|
馬上註冊,結交更多好友,享用更多功能,讓你輕鬆玩轉社區。
您需要 登錄 才可以下載或查看,沒有帳號?立即註冊
x
原文: http://forum.china.unity3d.com/thread-24586-1-1.html
說到遊戲中的真實地圖,大家腦海中浮現的第一款遊戲應該都是火爆全球的AR遊戲《Pokémon Go》吧。今天這篇教程將為大家介紹Mapbox Unity SDK,能夠在遊戲中獲取真實的世界地圖,或是根據真實地圖生成遊戲中的體素世界。這些地圖數據可以預先存儲在遊戲或應用中,也可以在運行時動態生成。
設置帳號
訪問Mapbox官網下載Mapbox Unity SDK,然后將下載的.assetpackage文件導入項目。在使用Mapbox插件之前,需要先在Mapbox官網申請API Key。創建Mapbox帳號后,打開API acess tokens頁面,新建一個token。
然后在Unity編輯器中依次點擊菜單項Mapbox - Configure Access打開Mapbox界面:
輸入Access Token:
如果Token生效,編輯器會出現如上圖的“TokenValid”提示。
示例場景
Mapbox插件提供了大量示例場景,其中最簡單的示例場景Slippy,也是遊戲項目較為常用的功能案例。它展示了地圖從選中的某點開始不斷向外延伸,根據視野範圍的變化來實時加載新的地形,這也是遊戲中追蹤某個對象的真實地理位置時常用的功能。
此示例使用了3D網格,與Unity自帶的3D地形無異。場景中的Map遊戲對象帶有Abstract Map腳本,可以在此腳本中設置地形的起始位置的經緯度與延展範圍。
Abstract Map腳本的Map Visualization字段用于定義地圖外觀。Mapbox插件已經提供了一些不同的視覺效果,但您也可以選擇自定義或重新創建地形。
將Map Visualization字段設為PoiDemoVisualization,並將起始位置改為上海,效果如下:
如果想生成《我的世界》那樣的體素地圖,可以打開VoxelWorld場景看看其設置。效果如下:
自定義地圖
除了Mapbox提供的示例地圖外觀,還可以自定義想顯示的地圖信息。下面就為大家介紹自定義地圖的步驟。
首先新建文件夾“CityMap”,然后在項目視圖選中該文件夾后單擊右鍵,依次選擇Create - Mapbox - MapVisualization新建可編程對象MapVisualizer,該對象將用作地圖的根節點,來承載所有的地圖層次。
然后創建Terrain Factory,在“CityMap”目錄下新建文件夾“CityTerrain”,然后在項目視圖選中該文件夾后單擊右鍵,依次選擇Create - Mapbox - Factories - Terrain Factory新建可編程對象CityTerrain:
在檢視面板中選中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中通過Mapbox來為遊戲添加真實世界地圖的內容就分享到這裏,本文僅簡單介紹了Mapbox Unity SDK的一小部分功能,感興趣的朋友可以去下載試用並更深入地探索。后續我們還會分享一些Unity相關的技術文章在Unity官方中文社區(unitychina.cn),請保持關註。
|
|