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

はじめに

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

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

サンプル・プロジェクト

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

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

MeshLibraryの作成

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

../../_images/gridmap_meshlibrary1.png

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

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

コリジョン

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

../../_images/gridmap_create_body.png

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

../../_images/gridmap_mesh_scene.png

マテリアル

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

MeshLibraryのエクスポート

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

../../_images/gridmap_export.png

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

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

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

../../_images/gridmap_main.png

"Cell/Size"プロパティは、メッシュのサイズに設定する必要があります。 デモのデフォルト値のままにしておくことができます。"Center Y"プロパティを"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, hold Shift and use 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

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

../../_images/gridmap_shift_axis.png

コードでのGridMapの使用

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