床や壁のシーンを作ろう
床や壁の構造
続いて床や壁のシーンを作ります。「ファイルシステム」ドックにres://scn/floor
フォルダーを作ります。この中に次のシーンを作成します。
- floor.tscn …… 床
- start.tscn …… スタート
- goal.tscn …… ゴール
- wall.tscn …… 壁マス
床のシーン
まずは床のシーンを作りましょう。
ルートノードは「Sprite2D」にして名前を「Floor」に変更します。「Ctrl+S」で保存するパスはres://scn/floor/floor.tscn
とします。
「Floor」(Sprite2D)の「インスペクター」ドックには、次のような変更を加えます。
-
「Sprite2D」
-
「Texture」に、
res://res/image/dot/floor.png
をドロップ
-
「Texture」に、

スタートのシーン
次はスタートのシーンを作ります。床のシーンと同じです。
ルートノードは「Sprite2D」にして名前を「Start」に変更します。「Ctrl+S」で保存するパスはres://scn/floor/start.tscn
とします。
「Start」(Sprite2D)の「インスペクター」ドックには、次のような変更を加えます。
-
「Sprite2D」
-
「Texture」に、
res://res/image/dot/start.png
をドロップ
-
「Texture」に、

ゴールのシーン
次はゴールのシーンを作ります。床やスタートより少し複雑です。
ルートノードは「Area2D」にして名前を「Goal」にします。「Ctrl+S」で保存するパスはres://scn/floor/goal.tscn
とします。
「Goal」ノードに子ノードとして「Sprite2D」と「CollisionShape2D」を追加します。配置後の状態は次のようになります。
▶ Goalシーン
-
Goal(Area2D)
- Sprite2D
- CollisionShape2D
「Goal」(Area2D)には変更を加えません。
「Sprite2D」の「インスペクター」ドックには、次のような変更を加えます。
-
「Sprite2D」
-
「Texture」に、
res://res/image/dot/goal.png
をドロップ
-
「Texture」に、
また「CollisionShape2D」の「インスペクター」ドックには、次のような変更を加えます。
-
「CollisionShape2D」
- 「Shape」で「新規RectangleShape2D」を選択
- 画像の状態になるようにシェイプの形状を調整

この四角のシェイプは小さめにします。大きくすると、ゴールのマスに入った瞬間にプレイヤーがゴールした表示になってしまいます。小さくすることで、マスの中ほどまでプレイヤーが達したタイミングでゴールの表示を出せます。
「Goal」シーンのシグナルは、ここでは設定しません。「Maze」シーンのスクリプト(maze.gd
)で、シグナルの発信と受信を書きます。
壁のシーン
次は壁のシーンを作ります。壁のシーンは、ゴールのシーンと似ています。
ルートノードは「StaticBody2D」にして名前を「Wall」にします。「Ctrl+S」で保存するパスはres://scn/floor/wall.tscn
とします。
「StaticBody2D」は、衝突する物体を表現する「PhysicsBody2D」を継承したノードで、壁などの固定物に適しています。
「Wall」ノードに子ノードとして「Sprite2D」と「CollisionShape2D」を追加します。配置後の状態は次のようになります。
▶ Wallシーン
-
Wall(StaticBody2D)
- Sprite2D
- CollisionShape2D
「Wall」(StaticBody2D)には変更を加えません。
「Sprite2D」の「インスペクター」ドックには、次のような変更を加えます。
-
「Sprite2D」
-
「Texture」に、
res://res/image/dot/wall.png
をドロップ
-
「Texture」に、
また「CollisionShape2D」の「インスペクター」ドックには、次のような変更を加えます。
-
「CollisionShape2D」
- 「Shape」で「新規RectangleShape2D」を選択
- 画像の状態になるようにシェイプの形状を調整
この四角のシェイプは壁の外周に沿うようにします。これは壁に侵入できないようにするためです。

「Wall」シーンのシグナルは設定しません。
「CharacterBody2D」や「StaticBody2D」といった「PhysicsBody2D」を継承したノードは物理の影響を受けます。これらはmove_and_slide
のような固有の関数で、自動で動きを制御できます。
特殊な処理が必要ないなら、何も設定しなくてよいです。
コリジョンについて
「Wall」(StaticBody2D)のノードの「インスペクター」ドックを見ると「CollisionObject2D」>「Collision」に「Layer」と「Mask」という項目があります。そして、それぞれ1~8までの数字が書かれたパネルが並んでいます。

「Collision」>「Layer」は、このノードが所属している物理レイヤーです。この物理レイヤーを、ビルの各階に例えるなら、自分が何階にいるかを表しています。
「Collision」>「Mask」は、衝突判定を行う物理レイヤーです。この物理レイヤーを、ビルの各階に例えるなら、何階の相手に対して衝突判定をおこなうかを表しています。
「Collision Layer」が「1」で、「Collision Mask」が「1」なら、自分自身は物理レイヤー「1」にいて、物理レイヤー「1」にいる相手に対して衝突判定をおこないます。
「Collision Layer」が「1」で、「Collision Mask」が「2」なら、自分自身は物理レイヤー「1」にいて、物理レイヤー「2」にいる相手に対して衝突判定をおこないます。
こうした設定を使えば、自分の撃った弾は敵だけに当たり、敵が撃った弾は自分だけに当たるといった状態を表現できます。