Using gridmaps

Wprowadzenie

Gridmaps are a tool for creating 3D game levels, similar to the way TileMap works in 2D. You start with a predefined collection of 3D meshes (a class_MeshLibrary) that can be placed on a grid, as if you were building a level with an unlimited amount of Lego blocks.

Kolizje i nawigacja mogą być również dodawane do siatki, tak jak w przypadku tile z tilemap.

Example project

Aby dowiedzieć się, jak działają GridMaps, zacznij od pobrania projektu ćwiczeniowego: gridmap_demo.zip.

Rozpakuj ten projekt i dodaj go do Menedżera Projektu za pomocą przycisku „Importuj”.

Tworzenie MeshLibrary

To begin, you need a class_MeshLibrary, which is a collection of individual meshes that can be used in the gridmap. Open the „MeshLibrary_Source.tscn” scene to see an example of how to set up the mesh library.

../../_images/gridmap_meshlibrary1.png

Jak widać, ta scena ma węzeł class_Spatial jako swój korzeń oraz wiele dzieci węzłów class_MeshInstance.

Jeśli nie potrzebujesz żadnej fizyki w swojej scenie, to już jesteś gotowy. Jednak w większości przypadków będziesz chciał przypisać kolizyjne obiekty do siatek.

Kolizje

Do każdej siatki można ręcznie przypisać class_StaticBody i class_CollisionShape . Alternatywnie można użyć menu „Mesh”, aby automatycznie utworzyć ciało kolizyjne w oparciu o dane siatki.

../../_images/gridmap_create_body.png

Zwróć uwagę, że kolizja „Convex” będzie działała lepiej w przypadku prostych siatek. W przypadku bardziej złożonych kształtów wybierz opcję „Utwórz trójwymiarowe ciało statyczne”. Gdy każda siatka ma przypisany ciało fizyczne i kształt kolizji, twoja biblioteka siatek jest gotowa do użycia.

../../_images/gridmap_mesh_scene.png

Materiały

Only the materials from within the meshes are used when generating the mesh library. Materials set on the node will be ignored.

Eksportowanie MeshLibrary

Aby wyeksportować bibliotekę, kliknij Scena -> Konwertuj do… -> MeshLibrary… i zapisz ją jako zasób.

../../_images/gridmap_export.png

You can find an already exported MeshLibrary in the project named „MeshLibrary.tres”.

Korzystanie z GridMap

Utwórz nową scenę i dodaj węzeł GridMap. Dodaj mesh library, przeciągając plik źródłowy z panelu - system plików i upuszczając go w właściwości „Temat” w inspektorze.

../../_images/gridmap_main.png

The „Cell/Size” property should be set to the size of your meshes. You can leave it at the default value for the demo. Set the „Center Y” property to „Off”.

Now you can start designing the level by choosing a tile from the palette and placing it with Left-Click in the editor window. To remove a tile, use Shift+Right-click.

Click on the „GridMap” menu to see options and shortcuts. For example, pressing „S” rotates a tile around the y-axis.

../../_images/gridmap_menu.png

Holding <Shift> and dragging with the left mouse button will draw a selection box. You can duplicate or clear the selected area using the respective menu options.

../../_images/gridmap_select.png

In the menu, you can also change the axis you’re drawing on, as well as shift the drawing plane higher or lower on its axis.

../../_images/gridmap_shift_axis.png

Using GridMap in code

See class_GridMap for details on the node’s methods and member variables.