ノード解説「Node」

対象読者:Godotを触ったことがない完全な初心者

はじめに

Godot(ゴドー)というゲームエンジンを使い始めると、最初に「Node(ノード)」という言葉に出会います。Godotにおいて、ノードはゲームを作るための最も基本的な部品です。

「ノードって何?どう使うの?」という疑問を、この記事でゼロから丁寧に解説します。

Nodeとは?

Nodeは、Godot 4におけるすべてのオブジェクトの「お父さん(基底クラス)」です。

Godotには Sprite2D(画像を表示する)、AudioStreamPlayer(音を鳴らす)、Camera2D(カメラ)など、さまざまな種類のノードが存在します。しかし、これらすべては内部的に Node クラスを継承しています。つまり、どんなノードも必ず Node の機能を持っているのです。

イメージ: ノードは「積み木のひとつひとつ」です。それを積み重ねてツリー(木構造)を作り、ゲームの世界が出来上がります。

シーンとノードの関係

Godotでは、ゲームの画面や仕組みを「シーン」という単位で管理します。シーンは必ず1つ以上のノードで構成されており、その構造を「シーンツリー」と呼びます。

シーンツリーのイメージ

Node(ルート)
├── Sprite2D(キャラクター画像)
├── CollisionShape2D(当たり判定)
└── AudioStreamPlayer(効果音)

このように、ノードを組み合わせることでゲームの要素を作っていきます。

Nodeクラスが持つ主な機能

Node 自体は画像を表示したり音を鳴らしたりする特別な機能は持っていませんが、すべてのノードが共通して使える便利な機能を提供しています。

1. 親子関係の管理

ノードは別のノードを「子ノード」として持つことができます。親ノードが削除されると子ノードも一緒に削除されるなど、まとめて管理できます。

# 子ノードを取得する
var sprite = get_node("Sprite2D")

# または省略記法($マーク)
var sprite = $Sprite2D

2. コールバック関数(ライフサイクルメソッド)

Nodeには、ゲームの進行に合わせて自動的に呼ばれる関数があります。

関数名 呼ばれるタイミング
_ready() ノードがシーンに追加されたとき(初期化処理に使う)
_process(delta) 毎フレーム呼ばれる(アニメーションや入力処理に使う)
_physics_process(delta) 物理演算のフレームごとに呼ばれる
extends Node

func _ready():
    print("ゲームスタート!")  # シーン開始時に1回だけ実行

func _process(delta):
    print("毎フレーム実行中...")  # 毎フレーム実行

3. シグナル(イベント通知)

ノード同士がやりとりするための「シグナル」という仕組みもNodeが持つ基本機能のひとつです。ボタンを押した、エリアに入った、などのイベントをほかのノードに伝えることができます。(シグナルについては別記事で詳しく解説します)

Nodeをそのまま使うケースとは?

Node 単体は見た目を持ちません。では、どんなときに Node をそのまま使うのでしょうか?

主な用途は「グループ分けや管理用のコンテナ」としてです。たとえば、複数のUI要素をまとめたいとき、あるいはゲームロジックだけを管理するスクリプト置き場として Node を使います。

Node(UIマネージャー)← 見た目なし、管理だけ
├── Label(スコア表示)
├── Label(ライフ表示)
└── Button(メニューボタンン)

まとめ

項目 内容
Nodeとは すべてのノードの基底クラス
主な機能 親子関係、コールバック、シグナル
Nodeをそのまま使う場面 グループ管理や論理処理のコンテナとして

Godotを使い始めたばかりの方にとって、Nodeの概念を理解することが最初の関門です。しかし一度理解できると、Sprite2DCharacterBody2D も「結局はNodeの一種なんだ」とすっきり見えてきます。

次回は、2Dゲームの基本となる Node2D について解説します。お楽しみに!


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

  • 001 Node(基底クラス)← 今ここ
  • 002 Node2D(2D空間のノード)
  • 003 Sprite2D(画像を表示する)
  • 004 CharacterBody2D(動けるキャラクター)

コメント