Godot入門:TileMapLayerの使い方と活用法

2Dノード

はじめに

2Dゲームのマップは、多くの場合「タイル」と呼ばれる小さな画像(32×32pxなど)を敷き詰めて作られます。手作業でそれぞれ配置したら大変ですが、それを効率化するのがTileMapLayerです。

Godot 4.2以降、従来の「TileMap」は「TileMapLayer」に置き換わり、さらに使いやすくなりました。

この記事では以下を学べます:

  • TileMapLayerの基本的な使い方
  • タイルセットの設定方法
  • スクリプトからタイルを追加・削除する
  • ランダムマップや動的なマップ変更
  • 従来のTileMapとの違い
TileMapLayerでマップを構築
タイルを敷き詰めて効率的にマップを作成できる

TileMapLayerとは?

TileMapLayerは、タイル画像の配列を管理し、2Dマップを効率的に構築するノードです。

「タイルセット」という複数のタイル画像をまとめたリソースを参照して、グリッド上にタイルを配置し、広大なマップを素早く構築できます。

継承ツリー:


TileMapLayer
  ↑
Node2D
  ↑
Node
  ↑
Object

Godot 4.2以降での変更:従来の「TileMap」は「TileMapLayer」に置き換わりました。複数レイヤーを持つマップを作る場合は、複数のTileMapLayerノードを階層状に配置します。

このノードを使うべき場面

使う場面:

  • 2Dステージ・ダンジョンマップの構築
  • ランダムマップの生成(スクリプトでタイルを配置)
  • 複数レイヤーを使った奥行き表現(背景・地面・オブジェクト)
  • 当たり判定付きの地形設定
  • 町やレベルエディタの背景作成

使わない場面:

  • 単なる背景画像 → Sprite2Dを使う
  • 非グリッド的なレイアウト → 個別のNode2Dやボディを使う

主なプロパティと機能

プロパティ/メソッド型・引数説明
tile_setTileSet使用するタイルセットリソース(.tres形式)
enabledboolTileMapLayerの表示・物理演算有効フラグ
y_sort_enabledboolY座標でソート(イソメトリックビューに有効)
set_cell(coords, source_id, atlas_coords)Vector2i, int, Vector2i指定座標にタイルを設置。source_idはタイルセット内のID
get_cell_source_id(coords)Vector2i → int指定座標のタイル種類を取得
erase_cell(coords)Vector2i指定座標のタイルを削除
get_used_cells()→ Array[Vector2i]配置されているすべてのタイル座標を配列で取得

コード例1:シンプルなマップ配置


extends TileMapLayer

func _ready():
	# タイルセットはインスペクターから指定
	# または set_tile_set(new_tileset) で設定

	# (0,0) 座標にソースID 0 のタイルを配置
	set_cell(Vector2i(0, 0), 0, Vector2i(0, 0))
	set_cell(Vector2i(1, 0), 0, Vector2i(0, 0))
	set_cell(Vector2i(2, 0), 0, Vector2i(1, 0))  # 別のタイル

コード例2:ランダムマップ生成


extends TileMapLayer

@export var width: int = 50
@export var height: int = 50
@export var grass_tile_id: int = 0
@export var water_tile_id: int = 1

func _ready():
	generate_random_map()

func generate_random_map():
	for x in range(width):
		for y in range(height):
			var tile_type = randi() % 2  # 0 または 1
			var source_id = grass_tile_id if tile_type == 0 else water_tile_id
			set_cell(Vector2i(x, y), source_id, Vector2i(0, 0))
タイルセットエディタ
タイルセットエディタでタイル属性を設定

もっと使いこなす:カスタマイズできるパラメータ

パラメータ説明用途
y_sort_enabledtrue/falseY座標順にソート(キャラが後ろに行くと背後に隠れるような表現に使う)
tile_setTileSet リソース複数タイルセットを持ち、スクリプトで切り替え可能
enabledtrue/falseマップ全体の表示・物理有効フラグ
タイル属性(カスタムデータ)文字列・bool・int などタイルごとに「通路・壁・床」などの属性を設定し、スクリプトで参照
物理レイヤーPolygon2D などタイルセット編集で物理形状を定義。当たり判定を自動生成

まとめ

一言要約:TileMapLayerは、タイル画像を敷き詰めて効率的に2Dマップを構築するノードで、Godot 4.2以降の推奨ノードです。

ポイント:

  • タイルセット(.tres)とTileMapLayerを組み合わせて使う
  • set_cell()でプログラム的にタイルを配置し、ランダムマップを生成できる
  • タイルセットエディタで物理形状やカスタムデータを定義すれば、当たり判定や特殊属性が自動処理される

次回予告:次はAnimationPlayerを解説します。スプライトやUIの動きをアニメーションとして再生する方法が分かります。

関連性の高いノード解説記事

この記事はGodot 4.xをもとに執筆しています。

コメント