Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

使用圖塊地圖

前言

Gridmaps 是一種用於建立3D遊戲關卡的工具, 方式類似於2D中使用 TileMap . 使用一個定義好的可以放在一個網格中的 3D mesh (a MeshLibrary) (譯注,grid和mesh都譯作網格, 這裡為了清晰,mesh直接使用英文,grid則譯作網格)物件集合搭建關卡, 就像您使用無限多數量的樂高積木搭建世界一樣.

就像使用tilemap的tile一樣, 碰撞和導覽也可以新增到網格中.

範例專案

除了這份說明文件,你可能也會想看看 Godot Demo 專案

解壓縮此專案並使用“匯入”按鈕將其新增到專案管理器。

建立 MeshLibrary

首先,您需要一個 MeshLibrary,它是可以在網格地圖中使用的 Mesh 的集合。打開“MeshLibrary_Source.tscn”場景以查看如何設定網格庫的範例。

../../_images/gridmap_meshlibrary1.png

可以看到, 這個場景有一個 class_Spatial 節點作為它的根, 以及一些 class_MeshInstance 子節點.

如果您的場景中不需要任何物理, 那麼到這裡就完成了. 但是, 在大多數情況下, 您還需要給網格指定碰撞體.

碰撞

您可以手動為每個 Mesh 指定 class_StaticBodyclass_CollisionShape。或者,您可以使用“網格”功能表根據 Mesh 資料自動建立碰撞體。

../../_images/gridmap_create_body.png

請注意,“凸”(Convex)碰撞體對於簡單 Mesh 效果更好。對於更複雜的形狀,請選擇“建立三角網格靜態體”。一旦每個網格都分配了物理主體和碰撞形狀,就可以使用網格庫了。

../../_images/gridmap_mesh_scene.png

材質

在生成網格庫時, 只使用網格內的材質. 節點上設定的材質將被忽略.

匯出 MeshLibrary

要匯出庫,點擊場景 -> 轉換為.. -> 網格庫...,並將其保存為資源。

../../_images/gridmap_export.png

可以在專案中找到已匯出的名為“MeshLibrary.tres”的 MeshLibrary。

使用 GridMap

建立一個新場景並新增一個 GridMap 節點。通過從檔案系統面板拖動資源檔並將其放入屬性面板中的“Theme”(主題)屬性中來新增網格庫。

../../_images/gridmap_main.png

“Cell/Size”屬性應設定為網格的大小。在本範例中您可以使用預設值。將“Center Y”屬性設定為“未啟用”。

現在你可以開始設計關卡了, 從調色板中選擇一個圖塊, 然後在編輯器視窗中用左鍵按一下它. 要刪除一個圖塊, 按住 Shift 並使用按右鍵.

使用「GridMap」功能表旁的箭頭變更您正在處理的樓層。

按一下“GridMap”功能表可以查看選項和快捷鍵。例如,按下 S 繞 Y 軸旋轉圖塊。

../../_images/gridmap_menu.png

按住 Shift 並使用滑鼠左鍵拖動將繪製一個選擇框. 您可以使用相應的功能表選項複製或清除所選區域.

../../_images/gridmap_select.png

在功能表中, 您還可以更改正在繪製的軸, 並將繪圖平面在其軸上移動得更高或更低.

../../_images/gridmap_shift_axis.png

在程式碼中使用 GridMap

有關節點方法和成員變數的詳細資訊, 請參閱 GridMap.