第4章 メインシーンとインスタンスの方法
前回は「ノード」とノードの集まってできて「シーン」を学びました。今回はメインシーンの設定とインスタンス化の実践を学んでいきます。
1.メインシーン?
2.プロジェクトの取り込み
3.メインシーンの設定
4.インスタンス化と追加
メインシーン?
ゲームには複数のシーンがあります。タイトルシーン、エンディングシーンなどさまざまなシーンが用意されているでしょう。
ところでこの中で一番最初に実行されるシーンはエンディングシーンでしょうか?いいえ、ここで一番最初に実行されるシーンは「タイトルシーン」ですね。プレイヤーはタイトルからエンディングに到達するまでのワクワクを味わいたいのに、いきなりエンディングが流れてきたらゲームが終わって悲しいです。そうならないためにメインシーンを使います。
メインシーンとはゲームで一番最初に実行されるシーンです。タイトルシーンをメインシーンとして設定すれば一番最初にタイトルシーンが実行されるようになります。次に扱われるサンプルプロジェクトを使ってメインシーンを設定してみましょう。
プロジェクトの取り込み
ここで新しくサンプルプロジェクトを取り込んでいただきます。
こちらのzipファイルをダウンロードして解凍してください。中身は次のようになっています。「project.godot」のアイコンが違っていても問題ありません。
では次はGodotを実行してください。実行して一番最初の画面で右側にある「スキャン」ボタンを押してください。
スキャンボタンを押したら「スキャンするフォルダを選択」という表示がされます。画像のウィンドウと中身が違っていても問題ありません。
そうしたら先ほど解凍した「SampleProject」のフォルダを選択して「現在のフォルダを選択」を選びましょう。
そうすると一覧に「SampleProject」が追加されました。
これで無事、プロジェクトを取り込むことができました。「メインシーンの設定」からこのプロジェクトを用いて説明していきます。
メインシーンの設定
それでは先ほど追加した「SampleProject」を開いてください。
前にプロジェクトの作成(第1章)を作ったときとほとんど同じです。違う部分は左下にあるファイルシステムドックです。
以下がフォルダの構成となっています
res://
Script ---- ソースコードが入っています。
image ---- 使用されている画像が入っています。
Ballet.tscn ---- 弾丸シーン
default_env.tres
Enemy.tscn ---- 敵シーン
Main.tscn ---- これをメインシーンに設定する
Player.tscn ---- プレイヤーシーン
さて、メインシーンの設定の前にもう一度だけテストプレイボタンを見てみましょう。
「メインシーンからの起動」というボタンがあると思いますが、メインシーンを設定せずに実行するとどうなるか試してみましょう。
実際に押してみると次のようなポップアップがでます。
「メインシーンが定義されていません。」と出てゲームを実行することができません。コンピューターは非常に厳密で「Main.tscnって書いてあるんだから察しろ」っと思っても残念ながらそうはいきません。
なので今一度、しっかり設定方法を覚えていきましょう。(ここで選択することも可能なのですが、最もスタンダードな設定方法をお伝えします。)
「キャンセル」ボタンを押して。メインメニューにある「プロジェクト」を押してください。
ここのプロジェクトの設定を選択しましょう。
そうするとゲームプロジェクトの設定項目が多く出ます。左のリストから「Application -> Run」を選択してください。そうするとMain Sceneの項目が出てきます。
MainSceneの項目にあるフォルダのマークをクリックしてMain.tscnを選択して「開く」を押してください。
そうしたらプロジェクトの設定を閉じてもう一度、テストプレイボタンからメインシーンの実行を押してください。
今度は無事に実行ができました。これでゲームが一番最初に起動するメインシーンの設定ができました。
インスタンス化と追加
メインシーンの設定はできましたが「Main.tscn」の中身がどうなっているのでしょうか。確認してみましょう。「Main.tscn」をダブルクリックして開いてください。
今からPlayerSceneをインスタンス化(コピー)して追加します。
ファイルシステムドックから「Player.tscn」をビューポートにドラッグしてみましょう。
(ビューポートにうっすら紫色の線で囲まれている部分があります、ここが実際にゲーム画面で映し出される部分なのでこの内側に配置すると良いです)
シーンドックに「Player.tscn」のインスタンス化(コピー)されが追加されました。
ここでもう一度、テストプレイボタンからメインシーンの実行をしてみましょう。
見事にプレイヤーが配置されましたね。矢印キーで移動、スペースキーで弾を発射できます。
ただし、まだ敵はいません。同様の手順で敵を配置してみましょう。
ファイルシステムドックから「Enemy.tscn」をビューポートにドラッグしてみましょう。
これで「Enemy.tscn」もインスタンス化され追加もされました。この状態でテストプレイボタンからメインシーンを実行してみましょう。
先ほど追加された敵が出現しました。(うまくいかない場合はEnemyがMainの子になっているかを確認してください。)
それでは弾丸を当ててみましょう。
弾丸が敵に当たり、倒すことができました。
インスタンス化は何度してもいいのでたくさん敵を配置しても全然大丈夫です。
ただしノードの親子関係には注意してください。
例えばPlayerを選択した状態で「Enemy.tscn」をインスタンス化して追加してみてください。
このように現在選択されているノードの子になります。事実、この状態でメインシーンを実行すると…
親子の関係になっているため、親のPlayerが動くと子であるEnemyも動いてしまいます。
アヒルと同じです。親が動けば子も動く。
慣れてきたら大量に配置して遊んでみてください。
今回、多くのことをお話ししましたが覚えていただきたいのは
・メインシーンの設定方法
・インスタンス化と追加
の2つです。
ここをしっかり覚えていただければ幸いです。
次回はいよいよ初めてのプログラミングです。
次
前
この記事が気に入ったらサポートをしてみませんか?