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

はじめに

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_set TileSet 使用するタイルセットリソース(.tres形式)
enabled bool TileMapLayerの表示・物理演算有効フラグ
y_sort_enabled bool Y座標でソート(イソメトリックビューに有効)
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_enabled true/false Y座標順にソート(キャラが後ろに行くと背後に隠れるような表現に使う)
tile_set TileSet リソース 複数タイルセットを持ち、スクリプトで切り替え可能
enabled true/false マップ全体の表示・物理有効フラグ
タイル属性(カスタムデータ) 文字列・bool・int など タイルごとに「通路・壁・床」などの属性を設定し、スクリプトで参照
物理レイヤー Polygon2D など タイルセット編集で物理形状を定義。当たり判定を自動生成

まとめ

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

ポイント:

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

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

シリーズ:Godot 4 ノード解説

  • 001-040: 基本ノード(準備中)
  • 041:StaticBody2D
  • 042:TileMapLayer
  • 043:AnimationPlayer
  • 044:AnimationTree
  • 045:AudioStreamPlayer
  • 046:AudioStreamPlayer2D
  • 047:GPUParticles2D
  • 048:CPUParticles2D
  • 049:Line2D
  • 050:CanvasLayer

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

コメント