7.メインシーンの作成
Mainシーンの準備
プレイヤー(Plaler)と敵(Mob)のシーンを作成しましたので、いよいよゲームを遊ぶためのメインシーンを作成します。
まずは新しいシーンを作ります。今回は「Node」ノードをルートノードにします。
「Node2D」ではなく「Node」を利用するのは、このメインシーンでは2Dの処理は何もおこなわないからです。ここではゲームのロジックだけをあつかいます。そのため、最もシンプルなノードである「Node」を選びます。
それでは作業をおこなっていきましょう。
画面上部のタブから「2D」を選び、2Dビューにします。また右側のサイドビューで、「インスペクター」ドックを選びます。そして、トップメニューの「シーン」から「新規シーン」を選択します。
「シーン」の「ルートノードを生成」から「その他のノード」ボタンをクリックします。
「Node を新規作成」ダイアログが開くので、ツリーのルートにある「Node」を選択して「作成」ボタンを押します。
「Node」の名前を「Main」に変更します。
「Ctrl+S」で保存します。「名前を付けてシーンを保存」ダイアログが出ますので、main.tscnのまま「保存」ボタンを押します。
「ファイルシステム」ドックにmain.tscnが追加されます。これで「Main」シーンの準備ができました。
子シーンをインスタンス化
次に、「Main」シーンに、すでに作成した「Player」シーンをインスタンス化して追加します。
「シーン」ドック上部の左から二番目のアイコン、鎖マークの「子シーンをインスタンス化」ボタンを押します。「Main」を右クリックして「子シーンをインスタンス化」を選んでもよいです。
「シーンを選択」ダイアログが開きますので、リストにあるplayer.tscnをクリックします。
すると「シーン」ドックの「Main」シーンの配下に、「Player」のインスタンスが配置されます。「Ctrl+S」で変更を保存します。
各種ノードの追加
Player以外にもいくつかのノードを追加します。「シーン」のMainを右クリックして「子ノードを追加」を選択します。次の4つのノードを順番に作成して、それぞれ名前を変更します。
| 種類 | 名前 | 用途 |
|---|---|---|
| Timer | MobTimer | モブが出現する頻度を制御 |
| Timer | ScoreTimer | 1秒ごとに得点を上げる |
| Timer | StartTimer | 開始する前に遅延させる |
| Marker2D | StartPosition | プレイヤーの開始位置を示す |
Timerを3つに、Marker2Dを1つです。それぞれ「シーン」ドックの「Main」の配下に子ノードとして作成します。
配置と名前の変更が終わったら「Ctrl+S」で保存します。
続いて、これらの4つのノードに対して、「インスペクター」ドックで値を設定します。「Wait Time」の単位は秒です。
-
MobTimer
-
「Timer」
- 「Wait Time」を「0.5」に変更。
-
「Timer」
-
ScoreTimer
-
「Timer」
- 「Wait Time」を「1」に変更。
-
「Timer」
-
StartTimer
-
「Timer」
- 「Wait Time」を「2」に変更。
- 「One Shot」を「On」に変更。
-
「Timer」
-
StartPosition
-
Node2D
-
「Transform」>「Position」
- 「x」を「240」に変更。
- 「y」を「450」に変更。
-
「Transform」>「Position」
-
Node2D
モブの生成
「Main」では、「Mob」をランダムな位置に生成します。
そのために、「シーン」ドックの「Main」ノードの子として「Path2D」ノードを追加して、名前を「MobPath」に変更します。そして「Ctrl+S」で保存します。
「シーン」ドックで「MobPath」(Path2D)を選択すると、2Dビューの上部にパス関連のアイコンが追加されます。パスの追加は、これらのツールでおこないます。
また、アイコンの中には磁石マークが付いたものがあります。「スマートスナップ」と「グリッドスナップ」を切り替えるボタンです。この中で「スマートスナップ」のアイコンをクリックしてオンにします。
またパス関連のアイコンの中から、「ポイントを追加」と「曲線を閉じる」を利用して、左上隅、右上隅、右下隅、左下隅の順番で外周をぐるりと回るパスを作ります。
この時、パスを作る向きを守ってください。
このあとのスクリプトで、パスに対して90度回転させた向きに敵を発生させます。今回のように時計回りにパスを設置すると、画面の内側を向いて敵が発生します。逆向きにパスを作ると、画面の外側を向いて発生してしまうので注意が必要です。
続いて「MobPath」に「PathFollow2D」を追加します。そして「PathFollow2D」の名前を「MobSpawnLocation」に変更します。
「PathFollow2D」ノードは、パスに沿って移動するためのノードです。このノードを利用して、パス上のランダムな位置と、現在の方向を得ることができます。
ここまで設定できたら、次はスクリプトを作成します。
