Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

GridMapの使用

はじめに

Gridmaps は、3Dゲームレベルを作成するためのツールで、TileMap が2Dで行う動作と似ています。 3Dメッシュの事前定義されたコレクション(MeshLibrary)から開始します。これは、無制限の量のLegoブロックでレベルを構築しているかのように、グリッドに配置できます。

タイルマップのタイルで行うのと同じように、コリジョンとナビゲーションをメッシュに追加できます。

サンプル・プロジェクト

GridMaps の仕組みをくわしく知るには、サンプル プロジェクト gridmap_starter.zip をダウンロードしてください。

このプロジェクトを解凍してから、『インポート』ボタンでプロジェクトマネージャーに追加します。

MeshLibraryの作成

まず初めに、MeshLibrary が必要になります。これはグリッドマップで使用するメッシュを集めたものです。『mesh_library_source.tscn』シーンを開いて、MeshLibraryのセットアップ方法を見てみましょう。

../../_images/gridmap_meshlibrary1.png

ご覧のとおり、このシーンのルートにはNode3Dノードがあり、そしていくつかのMeshInstance3Dノードが子になっています。

もし、あなたのシーンに物理演算が不要であれば、これで完了です。しかし、ほとんどの場合はメッシュにコリジョンを追加したくなるでしょう。

コリジョン

それぞれのメッシュに手動でStaticBody3DCollisionShape3D を追加するという方法もありますが、『メッシュ』メニューを選択すれば、メッシュデータからコリジョンを自動生成することもできます。

../../_images/gridmap_create_body.png

シンプルなメッシュには『凸状』コリジョン ボディのほうが合うでしょう。より複雑な形なら『静的三角形メッシュの作成』を選択します。それぞれのメッシュに物理ボディとコリジョン シェイプが割り当てられたら、メッシュ ライブラリは使えるようになります。

../../_images/gridmap_mesh_scene.png

マテリアル

メッシュライブラリの生成時には、メッシュ内にあるマテリアルのみが使用され、ノードに設定したマテリアルは無視されます。

MeshLibrary format

To summarize the specific constraints of the MeshLibrary format, a MeshLibrary scene has a Node3D as the root node, and several child nodes which will become MeshLibrary items. Each child of the root node should:

  • Be a MeshInstance3D, which will become the MeshLibrary item. Only this visual mesh will be exported.

  • Have a material, in the mesh's material slot, not the MeshInstance3D's material slots.

  • Have up to one StaticBody3D child, for collision. The StaticBody3D should have one or more CollisionShape3D children.

  • Have up to one NavigationRegion3D child, for navigation. The NavigationRegion3D can have one or more additional MeshInstance3D children, which can be baked for navigation, but won't be exported as a visual mesh.

Only this specific format is recognized. Other node types placed as children will not be recognized and exported. GridMap is not a general-purpose system for placing nodes on a grid, but rather a specific, optimized system, designed to place meshes with collisions and navigation.

MeshLibraryのエクスポート

ライブラリをエクスポートするには、 シーン → エクスポート... → メッシュライブラリ... をクリックして、リソースとして保存します。

../../_images/gridmap_export.png

"MeshLibrary.tres" という名前のプロジェクトで、既にエクスポートされたMeshLibraryを見つけることができます。

GridMap(グリッドマップ)の使用

新しいシーンを作成し、GridMapノードを追加します。 ファイルシステムドックからリソースファイルをドラッグし、インスペクタの[Theme]プロパティにドロップして、メッシュライブラリを追加します。

../../_images/gridmap_main.png

"Cell/Size"プロパティは、メッシュのサイズに設定する必要があります。 デモのデフォルト値のままにしておくことができます。"Center Y"プロパティを"Off"に設定します。

これで、パレットからタイルを選択し、エディタウィンドウで左クリックして配置することで、レベルの設計を開始できます。 タイルを削除するには右クリックを使用します。

"GridMap"メニューの横にある矢印を使用して、作業中の階層を変更します。

[グリッドマップ]メニューをクリックして、オプションとショートカットを表示します。たとえば、S を押すと、タイルがy軸を中心に回転します。

../../_images/gridmap_menu.png

Shift を押しながらマウスの左ボタンでドラッグすると、選択ボックスが描画されます。 それぞれのメニューオプションを使用して、選択した領域を複製または消去できます。

../../_images/gridmap_select.png

メニューでは、描画する軸を変更したり、描画面をその軸で上下に移動することもできます。

../../_images/gridmap_shift_axis.png

コードでのGridMapの使用

ノードのメソッドとメンバー変数の詳細については、GridMap を参照してください。