見出し画像

第4章 メインシーンとインスタンスの方法

 前回は「ノード」とノードの集まってできて「シーン」を学びました。今回はメインシーンの設定インスタンス化の実践を学んでいきます。

1.メインシーン?
2.プロジェクトの取り込み
3.メインシーンの設定
4.インスタンス化と追加

メインシーン?

 ゲームには複数のシーンがあります。タイトルシーンエンディングシーンなどさまざまなシーンが用意されているでしょう。
 ところでこの中で一番最初に実行されるシーンはエンディングシーンでしょうか?いいえ、ここで一番最初に実行されるシーンは「タイトルシーン」ですね。プレイヤーはタイトルからエンディングに到達するまでのワクワクを味わいたいのに、いきなりエンディングが流れてきたらゲームが終わって悲しいです。そうならないためにメインシーンを使います。

 メインシーンとはゲームで一番最初に実行されるシーンです。タイトルシーンをメインシーンとして設定すれば一番最初にタイトルシーンが実行されるようになります。次に扱われるサンプルプロジェクトを使ってメインシーンを設定してみましょう。

プロジェクトの取り込み

 ここで新しくサンプルプロジェクトを取り込んでいただきます。

 こちらのzipファイルをダウンロードして解凍してください。中身は次のようになっています。「project.godot」のアイコンが違っていても問題ありません。

画像1

 では次はGodotを実行してください。実行して一番最初の画面で右側にある「スキャン」ボタンを押してください。

画像2

 スキャンボタンを押したら「スキャンするフォルダを選択」という表示がされます。画像のウィンドウと中身が違っていても問題ありません。

画像3

 そうしたら先ほど解凍した「SampleProject」のフォルダを選択して「現在のフォルダを選択」を選びましょう。

画像4

 そうすると一覧に「SampleProject」が追加されました。

画像5

 これで無事、プロジェクトを取り込むことができました。「メインシーンの設定」からこのプロジェクトを用いて説明していきます。

メインシーンの設定

 それでは先ほど追加した「SampleProject」を開いてください。

画像6

 前にプロジェクトの作成(第1章)を作ったときとほとんど同じです。違う部分は左下にあるファイルシステムドックです。

画像7

 以下がフォルダの構成となっています

res://
 Script             ---- ソースコードが入っています。
 image            ---- 使用されている画像が入っています。
 Ballet.tscn      ---- 弾丸シーン
 default_env.tres
 Enemy.tscn    ---- 敵シーン
 Main.tscn      ---- これをメインシーンに設定する
 Player.tscn     ---- プレイヤーシーン

 さて、メインシーンの設定の前にもう一度だけテストプレイボタンを見てみましょう。

画像8

 「メインシーンからの起動」というボタンがあると思いますが、メインシーンを設定せずに実行するとどうなるか試してみましょう。

 実際に押してみると次のようなポップアップがでます。

画像9

 「メインシーンが定義されていません。」と出てゲームを実行することができません。コンピューターは非常に厳密で「Main.tscnって書いてあるんだから察しろ」っと思っても残念ながらそうはいきません。

 なので今一度、しっかり設定方法を覚えていきましょう。(ここで選択することも可能なのですが、最もスタンダードな設定方法をお伝えします。)

 「キャンセル」ボタンを押して。メインメニューにある「プロジェクト」を押してください。

画像10

 ここのプロジェクトの設定を選択しましょう。

画像11

 そうするとゲームプロジェクトの設定項目が多く出ます。左のリストから「Application -> Run」を選択してください。そうするとMain Sceneの項目が出てきます。

画像12

 MainSceneの項目にあるフォルダのマークをクリックしてMain.tscnを選択して「開く」を押してください。

画像13

 そうしたらプロジェクトの設定を閉じてもう一度、テストプレイボタンからメインシーンの実行を押してください。

画像14

 今度は無事に実行ができました。これでゲームが一番最初に起動するメインシーンの設定ができました。


インスタンス化と追加

 メインシーンの設定はできましたが「Main.tscn」の中身がどうなっているのでしょうか。確認してみましょう。「Main.tscn」をダブルクリックして開いてください。

画像15

 今からPlayerSceneをインスタンス化(コピー)して追加します。

 ファイルシステムドックから「Player.tscn」をビューポートにドラッグしてみましょう。
(ビューポートにうっすら紫色の線で囲まれている部分があります、ここが実際にゲーム画面で映し出される部分なのでこの内側に配置すると良いです)

画像16

画像17

 シーンドックに「Player.tscn」のインスタンス化(コピー)されが追加されました。

 ここでもう一度、テストプレイボタンからメインシーンの実行をしてみましょう。

画像18

 見事にプレイヤーが配置されましたね。矢印キーで移動、スペースキーで弾を発射できます。

画像19

 ただし、まだ敵はいません。同様の手順で敵を配置してみましょう。

 ファイルシステムドックから「Enemy.tscn」をビューポートにドラッグしてみましょう。

画像20

画像21

 これで「Enemy.tscn」もインスタンス化され追加もされました。この状態でテストプレイボタンからメインシーンを実行してみましょう。

画像22

 先ほど追加された敵が出現しました。(うまくいかない場合はEnemyがMainの子になっているかを確認してください。)

 それでは弾丸を当ててみましょう。

画像23

画像24

 弾丸が敵に当たり、倒すことができました。

 インスタンス化は何度してもいいのでたくさん敵を配置しても全然大丈夫です。

 ただしノードの親子関係には注意してください。

 例えばPlayerを選択した状態で「Enemy.tscn」をインスタンス化して追加してみてください。

画像25

 このように現在選択されているノードの子になります。事実、この状態でメインシーンを実行すると…

画像26

 親子の関係になっているため、親のPlayerが動くと子であるEnemyも動いてしまいます。
 
アヒルと同じです。親が動けば子も動く。

 慣れてきたら大量に配置して遊んでみてください。

画像27

 今回、多くのことをお話ししましたが覚えていただきたいのは
・メインシーンの設定方法
・インスタンス化と追加

の2つです。

 ここをしっかり覚えていただければ幸いです。

 次回はいよいよ初めてのプログラミングです。


この記事が気に入ったらサポートをしてみませんか?