ノードとシーン¶
Godotのキーコンセプトの概要 では、Godotゲームはシーンのツリーで構成され、各シーンはノードのツリーで構成されることを知りました。このレッスンでは、それらについてもう少し詳しく説明します。また、最初のシーンを作成します。
ノード¶
ノードとは、ゲームの基礎的な構成要素のことです 。ノードはレシピの材料のようなものです。ノードには、画像を表示したり、音を鳴らしたり、カメラを表現したりと、様々な種類があります。
すべてのノードは以下の属性を持っています。
名前
編集できるプロパティ
毎フレーム、更新するためのコールバックを受け取ります。
新しいプロパティと関数を使用して拡張できます。
別のノードを子として追加できます。
最後の属性が重要です。 ノードは集まってツリーを形成 し、プロジェクトを整理するための強力に作用します。異なるノードは異なる関数を持つため、それらを組み合わせると、より複雑な動作が生成されます。前に説明したように、"Character" という名前のキネマティックボディノード、スプライトノード、カメラノード、そしてコリジョンシェイプノードを使用して、カメラが追従する操作可能なキャラクターを構築できます。
シーン¶
このキャラクタのようにツリー内のノードを編成したものをシーンと呼びます。保存すると、シーンはエディタの新しいタイプのノードのように動作し、既存のノードの子として追加できます。シーンのインスタンスは、内部が非表示になっている単一のノードとして表示されます。
シーンを使用すると、ゲームのコードを好きなように構成できます。 ノードを構成 して、走ったりジャンプしたりするゲームキャラクター・ライフバー・操作できるチェストなど、独自で複雑なノードタイプを作成できます。
Godotエディタは基本的に シーンエディタ です。2Dや3Dのシーンを編集するためのツールや、ユーザーインターフェースなどが充実しています。1つのGodotプロジェクトには、必要なだけのシーンを含めることができます。エンジンが最低限で必要とするのは、アプリケーションの メインシーン の1つだけです。これは、あなたやプレイヤーがゲームを実行したときに、Godotが最初にロードするシーンです。
ノードのように機能することに加えて、シーンには次の属性があります。
この例の「キャラクター」のように、常に1つのルートノードがあります。
ハードディスクに保存しておいて、後で読み込むことができます。
シーンのインスタンスはいくつでも作成できます。5人でも10人でも、キャラクターシーンから、キャラクターをゲームに保持することが出来ます。
最初のシーンを作る¶
それでは、最初のシーンをノード1つだけで作成してみましょう。そのためには、まず新しいプロジェクトを作成する必要があります。プロジェクトを開くと、空のエディタが表示されているはずです。
空のシーンでは、左側のシーン ドックに、ルート ノードをすばやく追加するためのオプションがいくつか表示されます。「2D Scene (2Dシーン)」は Node2D ノードを追加し、「3D Scene (3Dシーン)」は Spatial ノードを追加し、「User Interface (ユーザーインターフェイス)」は Control ノードを追加します。これらのプリセットは便宜上用意されているもので、必ずしもこのボタンを使わなければならないというわけではありません。「Other Node (その他のノード)」では任意のノードを選択できます。空のシーンにおいては、「その他のノード」はシーンドックの上部左側にある「Add Child Node (子ノードを追加)」と全く同じ機能で、現在選択しているノードの子として新しいノードを追加するときに使います。
ここでは、Labelノードを1つシーンに追加します。このノードの役割は、スクリーンにテキストを描くことです。
"子ノードを追加"ボタンをクリックするか、その他のノードをクリックして親ノードを作成します。
するとノード作成のダイアログが開いて、作成できるノードの長いリストが表示されます。
[Label] ノードを選択します。名前を入力して、リストを絞り込むことができます。
[Label] ノードをクリックして選択し、ウィンドウの下部にある [Create] ボタンをクリックします。
シーンの最初のノードを追加すると、多くのことが起こります。[Label]が 2D ノード タイプであるため、シーンは 2D ワークスペースに変わります。ビューポートの左上隅に[Label]が表示されます。ノードは左側のシーン ドックに表示され、ノードのプロパティは右側のインスペクター ドックに表示されます。
ノードのプロパティの変更¶
次の一歩はLabelの「Text(テキスト)」プロパティを変更することです。「Hello world」に変えてみましょう。
ビューポートの右側にあるインスペクター ドックに向かいます。Text プロパティの下のフィールドをクリックし、「Hello World」と入力します。
入力すると、ビューポートにテキストが描画されるのがわかります。
ビューポート内のLabelノードを移動するには、ツールバーの移動ツールを選択します。
[Label] を選択した状態で、ビューポート内の任意の場所をクリックしてドラッグすると、長方形で区切られたビューの中心に移動します。
シーンの実行¶
さて、シーンを実行する準備がすべて整いました!トップバーの右の[シーンを実行]ボタンを押します (または F6 を押します)。
シーンを実行する必要があるため、ポップアップはシーンを保存するように案内します。
[Yes]ボタンをクリックするとファイルブラウザーが開くので、"Label.tscn"と名前をつけ[保存]ボタンを押して保存しましょう。
注釈
Save Scene As ダイアログは、エディタの他のファイルダイアログと同様に、プロジェクト内のファイルのみ保存可能です。ウィンドウ上部の``res://`` パスはプロジェクト'のルートディレクトリを表し、 "resource path" を意味しています。Godotのファイルパスについての詳細は、 ファイルシステム を参照してください。
アプリケーションが新しいウィンドウで開き、"Hello World"のテキストが表示されるはずです。
ウィンドウを閉じるか、 F8 を押すと、実行中のシーンを終了します。
注釈
もし、これがすぐに機能せず、(マルチモニターまたはシングルモニターでの使用環境を問わず)少なくとも1つのモニターに高DPIディスプレイがある場合は、プロジェクト → プロジェクト設定 → Display → Windowに進み、DpiでAllow Hidpiをオンにします。
メイン シーンの設定¶
テストシーンを実行するには、「実行」ボタンを使用します。その隣にある別のボタンで、プロジェクトのメインシーンを設定して実行することができます'。その際は F5 を押してください。
ポップアップウィンドウが表示され、メインシーンを選択するように促されます。
選択ボタンをクリックし、表示されたファイルダイアログで、Label.tscnをダブルクリックします。
デモが再び実行されるはずです。今後、プロジェクトを実行するたびに、Godot はこのシーンを開始点として使用します。
注釈
エディターは、メインシーンのパスを、project.godotファイルとして、プロジェクトのディレクトリに保存します。このテキストファイルを直接編集してプロジェクトの設定を変更することもできますが、"Project -> Project Settings"ウィンドウを使用して変更することも可能です。
次のパートでは、ゲームとGodotのもう1つの重要な概念、シーンのインスタンスの作成について説明します。