香港新手遊戲開發者論壇

 找回密碼
 立即註冊
查看: 2379|回復: 0

[轉載] Unity如何利用Mapbox在遊戲中實現真實地圖?

[複製鏈接]

63

主題

67

帖子

83 小時

在線時間

管理員

Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

積分
453
發表於 2017-8-23 10:33:04 | 顯示全部樓層 |閱讀模式

馬上註冊,結交更多好友,享用更多功能,讓你輕鬆玩轉社區。

您需要 登錄 才可以下載或查看,沒有帳號?立即註冊

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),請保持關註。
個人簽名
您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

手機版|Archiver|植物油氣

GMT+8, 2024-9-20 07:20 AM , Processed in 0.052161 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回復 返回頂部 返回列表