Godotノード's building blocks
ノードはGodotでゲームを作成するための基本構成要素です。ノードとは、特定の種類のゲーム機能を表現するオブジェクトのことです。例えば、グラフィックを表示したり、アニメーションを再生したり、3Dモデルオブジェクトを表現したりできます。各ノードにはカスタマイズ可能なプロパティセットが含まれており、その動作を自由に調整できます。プロジェクトにどのノードを追加するかは、必要な機能性によって異なります。これは、ゲームオブジェクト構築において最大限の柔軟性を提供するよう設計されたモジュールシステムです。
ノード操作について
ノードはプログラミング用語でいうところの オブジェクト です。データと動作をカプセル化し、他のノードからプロパティを継承できます。デフォルトの提案機能を使う代わりに、シーンドックにある「子ノードを追加」ボタンをクリックします。
ここでは、エンジンで利用可能なノードタイプの完全な階層構造を確認できます。例えば、青みがかったアイコンを持つノードはすべて「Node2D」カテゴリに属しており、いずれもNode2Dとしてのプロパティを備えています。その詳細については後ほど説明します。
リストが長く、必要なノードを探すたびに詳細を表示させるのは面倒です。代わりに検索機能を使えば、少ない文字入力で目的の項目を素早く見つけられます。ここでは Sprite2D ノードを探しているので、「sp」と入力するだけですぐにヒットします。「作成」をクリックして、ノードを追加してください。
これでシーンドックにこの Sprite2D ノードが追加されました。必ず選択状態にしてください。次に右側のインスペクタードックを見てみてください。ここには現在選択されているノードのすべてのプロパティが表示されます。これらのプロパティは、それらがどのソースから来ているかによって整理されていることに注目してください。Sprite2Dノードは Node2Dを継承しており、これはさらにCanvasItemを継承し、さらにその根本には単純なNodeがあります。
ビューポート上で確認すると、スプライトの表示は期待通りではありません。スプライトの目的は画像(テクスチャ)を表示することだからです。インスペクターを見ると、Textureプロパティが現在空になっているのがわかります。幸いなことに、新規プロジェクトには必ずGodotアイコンが付属しています。このアイコンをファイルシステムドックからドラッグし、テクスチャプロパティにドロップしてください。
インスペクターで「Transform」セクションを展開するためにクリックし、Position プロパティに (50, 50) と入力してください。
ビューポート内でスプライトをクリック&ドラッグすることも可能で、移動に合わせてPositionの値が変化していきます。
ノードの重要な特性の一つに、親子関係による階層構造を構築できる点があります。必ずSprite2Dを選択した状態で再度追加ボタンをクリックし、別のSprite2Dを追加してください。さらに、アイコンをテクスチャ領域にドラッグ&ドロップして配置することも忘れずに行ってください。
この新しいスプライトは最初のスプライトの子要素です。これは「親要素に紐付けられている」ことを意味します。親が移動すれば、その子も連動して動きます。まず子スプライトをクリックして、その位置を (50, 50) に設定してください。その後、親スプライトをクリック&ドラッグすることで、画面上で自由に動かせるようになります。
親要素の位置を移動させると、位置プロパティが変化していくのに注目してください。次に子要素を確認すると、依然として (50, 50) のままです。これはその子要素の「トランスフォーム」プロパティが、親要素に対して相対的に設定されているためです。
場面設定
グループ化というこの機能は非常に強力で、ノードを「構成要素」として組み合わせることで複雑なオブジェクトを構築できます。例えば、ゲームの「プレイヤー」ノードには、表示用のSprite2D、アニメーション制御用のAnimationPlayer、追従用カメラとしてのCamera2Dなど、複数の子ノードが追従していることがあります。
このように「ツリー」構造に配置されたノード群を、我々は「シーン」と呼んでいます。次のセクションでは、ゲームオブジェクトを独立した管理可能なパーツとして整理し、それらが相互に連携する仕組みについて詳しく解説します。後のレッスンで紹介する実践的な例を通して、この概念を実際に体験していただけるでしょう。