SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Godot Engine 2Dゲーム開発入門

【詳細解説】Godot Engineで始める2Dゲーム開発──公式サンプルを試してみよう

Godot Engine 2Dゲーム開発入門 第2回

7.メインシーンの作成

Mainシーンの準備

 プレイヤー(Plaler)と敵(Mob)のシーンを作成しましたので、いよいよゲームを遊ぶためのメインシーンを作成します。

 まずは新しいシーンを作ります。今回は「Node」ノードをルートノードにします。

 「Node2D」ではなく「Node」を利用するのは、このメインシーンでは2Dの処理は何もおこなわないからです。ここではゲームのロジックだけをあつかいます。そのため、最もシンプルなノードである「Node」を選びます。

 それでは作業をおこなっていきましょう。

 画面上部のタブから「2D」を選び、2Dビューにします。また右側のサイドビューで、「インスペクター」ドックを選びます。そして、トップメニューの「シーン」から「新規シーン」を選択します。

「新規シーン」を選択
「新規シーン」を選択

 「シーン」の「ルートノードを生成」から「その他のノード」ボタンをクリックします。

その他のノード
その他のノード

 「Node を新規作成」ダイアログが開くので、ツリーのルートにある「Node」を選択して「作成」ボタンを押します。

「Node」を選択
「Node」を選択

 「Node」の名前を「Main」に変更します。

名前を「Main」に変更
名前を「Main」に変更

 「Ctrl+S」で保存します。「名前を付けてシーンを保存」ダイアログが出ますので、main.tscnのまま「保存」ボタンを押します。

「名前を付けてシーンを保存」ダイアログ
「名前を付けてシーンを保存」ダイアログ

 「ファイルシステム」ドックにmain.tscnが追加されます。これで「Main」シーンの準備ができました。

main.tscn
main.tscn

子シーンをインスタンス化

 次に、「Main」シーンに、すでに作成した「Player」シーンをインスタンス化して追加します。

 「シーン」ドック上部の左から二番目のアイコン、鎖マークの「子シーンをインスタンス化」ボタンを押します。「Main」を右クリックして「子シーンをインスタンス化」を選んでもよいです。

子シーンをインスタンス化
子シーンをインスタンス化

 「シーンを選択」ダイアログが開きますので、リストにあるplayer.tscnをクリックします。

「シーンを選択」ダイアログ
「シーンを選択」ダイアログ

 すると「シーン」ドックの「Main」シーンの配下に、「Player」のインスタンスが配置されます。「Ctrl+S」で変更を保存します。

Playerのインスタンス
Playerのインスタンス

各種ノードの追加

 Player以外にもいくつかのノードを追加します。「シーン」のMainを右クリックして「子ノードを追加」を選択します。次の4つのノードを順番に作成して、それぞれ名前を変更します。

種類 名前 用途
Timer MobTimer モブが出現する頻度を制御
Timer ScoreTimer 1秒ごとに得点を上げる
Timer StartTimer 開始する前に遅延させる
Marker2D StartPosition プレイヤーの開始位置を示す

 Timerを3つに、Marker2Dを1つです。それぞれ「シーン」ドックの「Main」の配下に子ノードとして作成します。

Timer
Timer
Marker2D
Marker2D

 配置と名前の変更が終わったら「Ctrl+S」で保存します。

配置後
配置後

 続いて、これらの4つのノードに対して、「インスペクター」ドックで値を設定します。「Wait Time」の単位は秒です。

  • MobTimer
    • 「Timer」
      • 「Wait Time」を「0.5」に変更。
  • ScoreTimer
    • 「Timer」
      • 「Wait Time」を「1」に変更。
  • StartTimer
    • 「Timer」
      • 「Wait Time」を「2」に変更。
      • 「One Shot」を「On」に変更。
  • StartPosition
    • Node2D
      • 「Transform」>「Position」
        • 「x」を「240」に変更。
        • 「y」を「450」に変更。
設定後
設定後

モブの生成

 「Main」では、「Mob」をランダムな位置に生成します。

 そのために、「シーン」ドックの「Main」ノードの子として「Path2D」ノードを追加して、名前を「MobPath」に変更します。そして「Ctrl+S」で保存します。

「Node を新規作成」ダイアログ
「Node を新規作成」ダイアログ
「Path2D」を作成
「Path2D」を作成
名前を「MobPath」に変更
名前を「MobPath」に変更

 「シーン」ドックで「MobPath」(Path2D)を選択すると、2Dビューの上部にパス関連のアイコンが追加されます。パスの追加は、これらのツールでおこないます。

 また、アイコンの中には磁石マークが付いたものがあります。「スマートスナップ」と「グリッドスナップ」を切り替えるボタンです。この中で「スマートスナップ」のアイコンをクリックしてオンにします。

 またパス関連のアイコンの中から、「ポイントを追加」と「曲線を閉じる」を利用して、左上隅、右上隅、右下隅、左下隅の順番で外周をぐるりと回るパスを作ります。

 この時、パスを作る向きを守ってください。

 このあとのスクリプトで、パスに対して90度回転させた向きに敵を発生させます。今回のように時計回りにパスを設置すると、画面の内側を向いて敵が発生します。逆向きにパスを作ると、画面の外側を向いて発生してしまうので注意が必要です。

ツールと操作の説明
ツールと操作の説明
操作後の画面
操作後の画面

 続いて「MobPath」に「PathFollow2D」を追加します。そして「PathFollow2D」の名前を「MobSpawnLocation」に変更します。

 「PathFollow2D」ノードは、パスに沿って移動するためのノードです。このノードを利用して、パス上のランダムな位置と、現在の方向を得ることができます。

「Node を新規作成」ダイアログ
「Node を新規作成」ダイアログ
「PathFollow2D」を作成
「PathFollow2D」を作成
名前を「MobSpawnLocation」に変更
名前を「MobSpawnLocation」に変更

 ここまで設定できたら、次はスクリプトを作成します。

次のページ
8.Mainのスクリプトの作成

この記事は参考になりましたか?

Godot Engine 2Dゲーム開発入門連載記事一覧

もっと読む

この記事の著者

柳井 政和(ヤナイ マサカズ)

クロノス・クラウン合同会社 代表社員http://crocro.com/オンラインソフトを多数公開。プログラムを書いたり、ゲームを作ったり、記事を執筆したり、マンガを描いたり、小説を書いたりしています。「めもりーくりーなー」でオンラインソフト大賞に入賞。最近は、小説家デビューして小説も書いています(『裏切りのプログラム』他)。面白いことなら何でもOKのさすらいの企画屋です。 

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/21370 2025/05/28 11:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー